U-Boot 顶层Makefile解析


u-Boot -Makefile(一)  声明 : 以下解析大部分来自网络大神之手 所以可以放心阅读  Good luck

VERSION = 1
PATCHLEVEL = 1
SUBLEVEL = 6
EXTRAVERSION =
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
#版本号定义
VERSION_FILE = $(obj)include/version_autogenerated.h  #不是很理解这句话的意思
# 举例理解$(obj)  obj := a.o b.o  $(obj)指的是obj变量的值  即为a.o b.o
# makefile中的$(xxx)跟shell中的是不一样的

HOSTARCH := $(shell uname -m | \
 sed -e s/i.86/i386/ \
    -e s/sun4u/sparc64/ \
    -e s/arm.*/arm/ \
    -e s/sa110/arm/ \
    -e s/powerpc/ppc/ \
    -e s/macppc/ppc/)
# uname 命令将正在使用的操作系统名写到标准输出中
# -m 显示系统运行的硬件机器ID号
#  '| '  为linux中的管道处理符 pipe    而 '\'  自然就是换行符咯
#  sed -e 后面跟着一串(shell?)命令脚本 表示将i.86替换成i386  这样执行一套程序下来就知道硬件的体系结构了  如何知道的?
# 我猜应该会有某个变量用来标记 是哪种硬件体系的吧 只要对应的体系结构名被修改后就标记它 得以知道是哪种结构?
# i386
# sparc64
# arm -ARM
# ppc -Power PC


##下面这句话的意思是定义变量HOSTOS,HOSTOS里面存放的是主机安装的,并且当前正在运行的操作系统
HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
    sed -e 's/\(cygwin\).*/cygwin/')
#sed -e 's/\(cygwin\).*/cygwin/')   
# 这一句的意思是检测出主机安装的,并且当前正在运行的操作系统名,并把这个系统名中的大写字母转换为小写字母
# 然后在通过sed流编辑器匹配所有的,这个系统名中出现的"\(cygwin\).*"模式,然后再用"cygwin"模式替换。(用来处理"cygwin"环境下编译的环境变量)
## 可以把shell脚本写到makefile里面,这是make中的shell function,相当于shell中的命令替换!
# uname -s 得到内核系统名称即Linux   
# tr '[:upper:]' '[:lower:]'把大写变成小写然后输出(也就是将Linux--->linux  Linux是通过管道得来的)(tr为shell command)
 
export HOSTARCH HOSTOS  #导出变量HOSTARCH 和变量HOSTOS 

# Deal with colliding definitions from tcsh etc.处理来自tcsh相互冲突的定义等等
VENDOR= 
#VENDOR 是卖家、卖方的意思 这边可以写开发商名字吧

更多详情见请继续阅读下一页的精彩内容

u-boot Makefile完全解读 

U-Boot中的date命令

U-Boot源代码下载地址

U-Boot下的两个重要数据:bd_t和gd_t 

U-Boot中的version命令

U-Boot中的usb命令

  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一页

相关内容