



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
linux make menuconfig 执行流程小结/u2/63991/showart_1820030.htmllinux//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 如果执行”make modules”,会在214行开始对其进行一些处理 ifeq ($(MAKECMDGOALS),modules) KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1) endif 所以我们这里 KBUILD_BUILTIN :=1 KBUILD_MODULES在顶层Makefile的第206行定义, KBUILD_MODULES := 如果执行”make all”、”make _all”、”make modules”、”make”中任一个命令,则在222行开始会对这个变量进行处理 ifneq ($(filter all _all modules,$(MAKECMDGOALS),) KBUILD_MODULES := 1 endif ifeq ($(MAKECMDGOALS),) KBUILD_MODULES := 1 endif 因此,我们这里KBUILD_MODULES := 分析了这两个变量后,上面的规则可重新写为 _build: $(builtin-target) $(lib-target) $(extra-y) $(subdir-ym) $(always) : 这就是通过规则 scripts_basic: $(Q)$(MAKE) -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj=scripts/basic 在scripts/Makefile.build文件中执行的第一个规则, 规 则中的依赖由几个变量$(builtin-target) $(lib-target) $(extra-y) $(subdir-ym) $(always)表示。规则的命令是一个冒号命令”:”,冒号(:)命令是bash的内建命令,通常把它看作true命令。bash的help解释 (help :)为:No effect; the command does nothing. A zero exit code is returned.(没有效果,该命令是空操作,退出状态总是0)。 _build: $(builtin-target) $(lib-target) $(extra-y) $(subdir-ym) $(always) : 构建一些依赖目标,这里主要是构建$(always)变量指定的目标。其他变量在scripts/basic/Makefile中并没有定义。 3、 outputmakefile 回到顶层Makefile中看规则 menuconfig: scripts_basic outputmakefile FORCE $(Q)mkdir -p include/linux include/config $(Q)$(MAKE) $(build)=scripts/kconfig menuconfig 中的outputmakefile参数构建规则在357行开始定义 outputmakefile: ifneq ($(KBUILD_SRC),) $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) endif 这个规则的命令运行一个shell脚本scripts/mkmakefile,并传递四个参数。这个脚本主要是在$(objtree)参数指定的目录中生成一个Makefile文件。由于这里KBUILD_SRC为空,所以这个脚本并不会被执行 回头再看看刚才那个规则 menuconfig: scripts_basic outputmakefile FORCE $(Q)mkdir -p include/linux include/config $(Q)$(MAKE) $(build)=scripts/kconfig menuconfig 在他的依赖被处理完后,开始执行规则的命令。第一个命令创建了两个目录,第二个命令扩展后为 $(Q)$(MAKE) -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj =scripts/kconfig menuconfig 这 个命令依然是执行scripts/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业项目安全管理制度
- 中央企业纠纷管理制度
- “冲突构境”在高中历史教学中的运用路径初探
- 中南集团成本管理制度
- 银行营业厅内部管理制度
- 严格规范会议管理制度
- 乡镇沿街商店管理制度
- 企业职务调整管理制度
- 企业定制计划管理制度
- 中医内科科室管理制度
- 2025至2030年中国核电材料行业市场现状分析及发展战略研判报告
- 2025至2030年中国高镍三元材料产业发展动态及投资方向分析报告
- DB13T 1320.10-2010 中药材种子质量标准 第10部分:防风
- 2025年毕节市大方富民村镇银行招聘题库带答案分析
- (2025)国家公务员考试时事政治必考试题库与答案
- 医院残疾评定管理制度
- 2025影视拍摄场地布置合同协议书
- 2017司考题目及答案
- 杂志分拣打包服务合同4篇
- 2025年D-对羟基苯甘氨酸项目市场调查研究报告
- 国泰君安补签风险协议书
评论
0/150
提交评论