慢慢欣赏linux if_changed_xxx的作用

11 篇文章 0 订阅
7 篇文章 0 订阅

编译内核会生成很多临时文件,以 o.cmd为后缀。
打开看发现是编译脚本。
这些文件是在scripts/makefile.build文件通过如下编译宏实现:

define rule_cc_o_c
	$(call echo-cmd,checksrc) $(cmd_checksrc)			  \
	$(call echo-cmd,cc_o_c) $(cmd_cc_o_c);				  \
	$(cmd_modversions)						  \
	$(call echo-cmd,record_mcount)					  \
	$(cmd_record_mcount)						  \
	scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' >    \
	                                              $(dot-target).tmp;  \
	rm -f $(depfile);						  \
	mv -f $(dot-target).tmp $(dot-target).cmd
endef

调用者也在同一个文件(scripts/makefile.build),编译可执行程序和ko都会生成类似的临时文件

# Built-in and composite module parts
$(obj)/%.o: $(src)/%.c FORCE
	$(call cmd,force_checksrc)
	$(call if_changed_rule,cc_o_c)

# Single-part modules are special since we need to mark them in $(MODVERDIR)

$(single-used-m): $(obj)/%.o: $(src)/%.c FORCE
	$(call cmd,force_checksrc)
	$(call if_changed_rule,cc_o_c)
	@{ echo $(@:.o=.ko); echo $@; } > $(MODVERDIR)/$(@F:.o=.mod)

u-boot-2016.09 make工具之fixdep
https://blog.csdn.net/guyongqiangx/article/details/52588409

【u-boot-2018.11】make工具之fixdep
https://blog.csdn.net/linuxweiyh/article/details/100179968

内核编译系统探秘之一 if_changed_rule
http://blog.sina.com.cn/s/blog_61c81f910100phiq.html

Uboot 中make menuconfig 做了什么?
https://www.cnblogs.com/syyxy/p/9350999.html

内核Kbuild 学习
http://blog.chinaunix.net/uid-20778443-id-103963.html
http://www.360doc.com/content/12/0107/15/6828497_177891385.shtml

Linux之Makefile(strip)
https://blog.csdn.net/zhoudengqing/article/details/41777665

【u-boot】u-boot-2016.09 make编译过程分析(二)
https://blog.csdn.net/qq_38144425/article/details/73326052

if_changed_rule/cc_o_c/any-prereq/arg-check
https://blog.csdn.net/lcw_202/article/details/6660957

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值