UBOOT的编译过程一

#make tiny4412_config

一切从顶层目录中的makefile 中开始寻找答案:

%_config::    unconfig
    @$(MKCONFIG) -A $(@:_config=)

其中%是通配符代表所有可能的字符

当make 之后先执行unconfig:

unconfig:
    @rm -f $(obj)include/config.h $(obj)include/config.mk \
        $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \
        $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep

obj := $(OBJTREE)/

OBJTREE        := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))

其中BUILD_DIR是通过o=来指定的一个目录

其中CURDIR是内部变量

插讲:$(if CONDITION,THEN-PART[,ELSE-PART]) 
¾  函数功能:第一个参数“CONDITION” ,在函数执行时忽略其前导和结尾空字符,如果包含对其他变量或者函数的引用则进行展开。如果“CONDITION”的展开结果非空,则条件为真,就将第二个参数“THEN_PATR”作为函数的计算表达式;“CONDITION”的展开结果为空,将第三个参数“ELSE-PART”作为函数的表达式,函数的返回结果为有效表达式的计算结果。 
¾  返回值:根据条件决定函数的返回值是第一个或者第二个参数表达式的计算结果。当不存在第三个参数“ELSE-PART” ,并且“CONDITION”展开为空,函数返回空。 
¾  函数说明:函数的条件表达式“CONDITION”决定了函数的返回值只能是“THEN-PART”或者“ELSE-PART”两个之一的计算结果。 
¾  函数示例: 
SUBDIR += $(if $(SRC_DIR) $(SRC_DIR),/home/src) 
函数的结果是:如果“SRC_DIR”变量值不为空,则将变量“SRC_DIR”指定
的目录作为一个子目录;否则将目录“/home/src”作为一个子目录。

回到正题,对于unconfig命令就是一种将删除上一个make XXX_config产生的文件。主要是一些产生autoconfig.h(用于.h文件中),auto.config(用于makefile中)

 对于@$(MKCONFIG) -A $(@:_config=)这个命令:

1,我们先讲$(@:_config=)这句话主要是对tiny4412_config进行处理。刚才那个命令的意思是将字符中的_config替换成等号右边的字符,没有就是为空,所以处理之后为tiny4412。

2,@$(MKCONFIG)

MKCONFIG    := $(SRCTREE)/mkconfig

SRCTREE        := $(CURDIR)

也就是顶层目录中的mkconfig。通过它去进一步解析这个命令。所以上面命令变成mkconfig -A tiny4412其中-A表示要自动配置。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值