- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CU_linuxmakemenuconfig执行流程小结(2.6.20.6)
linux make menuconfig 执行流程小结
/u2/63991/showart_1820030.html
linux//make menuconfig
????
????
????当在顶层目录执行”make menuconfig”会执行顶层Makefile 第415行的规则
????
????config %config: scripts_basic outputmakefile FORCE
???? $(Q)mkdir -p include/linux include/config
???? $(Q)$(MAKE) $(build)=scripts/kconfig $@
????
????这里”menuconfig”与模式”%config”匹配。所以其执行的规则如下:
????
????menuconfig: scripts_basic outputmakefile FORCE
???? $(Q)mkdir -p include/linux include/config
???? $(Q)$(MAKE) $(build)=scripts/kconfig menuconfig
????
????这个规则有三个依赖:scripts_basic、outputmakefile、FORCE。下面看一下这三个依赖:
????
????1、 FORCE
????
????首先分析一下这个依赖,它的规则定式义在1485行:
???? ????PHONY += FORCE
????FORCE:
????
????这个规则没有命令也没有依赖,它的目标也不是一个存在的文件名。在执行此规则时,目标FORCE总会被认为是最新的。这样当它作为其它规则的依赖时,因为依赖总被认为被更新过的,所以那个规则的中定义的命令总会被执行。
????
????2、 scripts_basic
????这个依赖的规则在347行定义:
????
????scripts_basic:
???? $(Q)$(MAKE) $(build)=scripts/basic
????
????build这个变量定义在scripts/kbuild.include的114行:
????
????build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
????
????所以上面的规则可写成如下形式:
????
????scripts_basic:
???? $(Q)$(MAKE) -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj=scripts/basic
????
????这个规则的命令最终会进入scripts目录,执行Makefile.build文件,并传递参数obj=scripts/basic.
????
????在Makefile.build的第5行有:
????
????src := $(obj)
????
????这就把传递进来的值赋给了src,所以
????
????src := scripts/basic
????
????从第16行开始的两行把src (即scripts/basic)目录下的Makefile包含进来(如果有Kbuild则包含Kbuild)
????
????kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
????include $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile)
????
????在第19行包含了scripts/Makefile.lib进来,
????
????在Makefile.build的第83行,是make在Makefile.build中遇到的第一个目标
????
????__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
???? $(if $(KBUILD_MODULES),$(obj-m)) \
???? $(subdir-ym) $(always)
???? @:
????
????KBUILD_BUILTIN在顶层Makefile的第207行定义
????
????KBUILD_BUILTIN := 1
????
????如果执行
文档评论(0)