设为首页 加入收藏

TOP

U-Boot 顶层Makefile解析
2014-11-24 02:33:51 来源: 作者: 【 】 浏览:0
Tags: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 是卖家、卖方的意思 这边可以写开发商名字吧


相关阅读


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux中的IPC参数更改 下一篇Matlab中的取整函数fix, floor, c..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: