u-Boot 顶层Makefile解析(一)

来源:互联网 发布:冒险岛steam Mac 编辑:程序博客网 时间:2024/05/22 02:05
u-Boot -Makefile(一)  声明 : 以下解析大部分来自网络大神之手 所以可以放心阅读  Good luckVERSION = 1PATCHLEVEL = 1SUBLEVEL = 6EXTRAVERSION =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)exportHOSTARCH HOSTOS  #导出变量HOSTARCH 和变量HOSTOS# Deal with colliding definitions from tcsh etc.处理来自tcsh相互冲突的定义等等VENDOR=#VENDOR 是卖家、卖方的意思 这边可以写开发商名字吧 


原创粉丝点击