uboot的.boards.depend和make rpi_b

可以参考

u-boot实现原理完全分析 百度文库

当我们uboot执行make rpi_b的时候。根本没有发现makefile里面没有rpi_b这个目标

那么rpi_b这个目标是哪里来的呢?


原来makefile中有这么一句:

sinclude $(obj).boards.depend
$(obj).boards.depend:	boards.cfg
	@awk '(NF && $$1 !~ /^#/) { print $$1 ": " $$1 "_config; $$(MAKE)" }' $< > $@


(一般$obj为空)因此有一个隐藏文件 .boiards.depend

内容一般为

rpi_b: rpi_b_config; $(MAKE)
rockchip: rockchip_config; $(MAKE)
integratorap_cm720t: integratorap_cm720t_config; $(MAKE)
a320evb: a320evb_config; $(MAKE)
at91rm9200ek: at91rm9200ek_config; $(MAKE)

执行的时候rpi_b目标就是这里来的



@awk '(NF && $$1 !~ /^#/) { print $$1 ": " $$1 "_config; $$(MAKE)" }' $< > $@

意思是

$<是输入文件(boards.cfg),$@是目标本身(.boards.depend),如果文件中某行不为空,第一个元素不为~和#就将其以print $$1 ": " $$1 "_config; $$(MAKE)"的格式输出到文件$@中。最终生成的.boards.depend

可以通过在uboot目录命令行执行

awk '(NF && $1 !~ /^#/) { print $1 ": " $1 "_config; $(MAKE)" }' boards.cfg >.boards.depend

得到这个.boards.depend


再来看其中的意思

rpi_b: rpi_b_config; $(MAKE)


rpi_b依赖于 rpi_b_config

$(MAKE) 就是make的意思


rpi_b: rpi_b_config; $(MAKE)可以改写为

rpi_b: rpi_b_config

$(MAKE)

是一个意思。如果放在一行需要加个分号。换行的$(MAKE)用tab开头


所以整句的意思就是先构建rpi_b_config随后执行make

rpi_b: rpi_b_config; $(MAKE) == make rpi_b_config&&make





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值