- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可以看到,在顶层makefile的第278行,包含了scripts/Kbuild.include文件,在这里定义了大量的函数和变量,供顶层makefile和其他makefile文件使用。
在顶层makefile文件的第412行,包含了arch/arm/Makefile。这个是体系结构相关makefile文件。它定义了体系结构相关的一些变量及规则。
当执行”make”时,arch/arm/Makefile中的185行的规则将是make遇到的第一个规则:
all: $(KBUILD_IMAGE)
KBUILD_IMAGE这个变量是arch/arm/Makefile的第182行定义。
KBUILD_IMAGE := zImage
然后看zImage的构建规则,在arch/arm/Makefile的第212行开始定义
zImage Image xipImage bootpImage uImage: vmlinux
$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
build变量在scripts/Kbuild.include文件中第114行定义:
build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
boot变量在arch/arm/Makefile的187行定义:
boot := arch/arm/boot
MACHINE变量的值在arch/arm/Makefile的147行开始定义
ifneq ($(machine-y),)
MACHINE := arch/arm/mach-$(machine-y)/
else
MACHINE :=
endif
这里machine-y := s3c2410,所以变量MACHINE的值为
MACHINE := arch/arm/mach-s3c2410
所以上面的规则可写为如下形势
zImage: vmlinux
$(Q)$(MAKE) -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj= \
arch/arm/boot MACHINE= arch/arm/mach-s3c2410 arch/arm/boot/ zImage
这个规则的依赖是vmlinux,下面先看看这个依赖目标的创建规则。
vmlinux目标的规则在顶层Makefile的第738行定义。
vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE
ifdef CONFIG_HEADERS_CHECK
$(Q)$(MAKE) -f $(srctree)/Makefile headers_check
endif
$(call if_changed_rule,vmlinux__)
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $@
$(Q)rm -f .old_version
这里涉及到几个变量,先看看这几个变量的定义,前三个变量分别在605、602、603行定义。
vmlinux-init := $(head-y) $(init-y)
vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y)
vmlinux-lds := arch/$(ARCH)/kernel/vmlinux.lds
其中head-y在arch/arm/Makefile中第89行定义,
head-y := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o
init-y在顶层makefile的433行定义
init-y := init/
后又在第567行进行处理
init-y := $(patsubst %/, %/built-in.o, $(init-y))
所以变量init-y应为
init-y :=
您可能关注的文档
最近下载
- 2025年公务员多省联考《申论》真题试题答案解析(湖南省市卷).pdf VIP
- T∕CECS 10039-2019 绿色建材评价 墙面涂料(可复制版).pdf
- 2013款别克昂科拉用户使用手册.pdf VIP
- 通化(2011)1207双线路腕臂.pdf VIP
- 《公司研发投入与公司价值之间关系研究文献综述》2400字.doc VIP
- 高血压的护理(共22张PPT).pptx VIP
- 2025金融监管局考试真题及答案.doc VIP
- 通化(2010)1042双线路腕臂.pdf VIP
- 空间灵活性如何通过设计提升空间的灵活性与多功能性.pptx VIP
- 叁化(2008)1168多线路腕臂构造安装图.pdf VIP
原创力文档


文档评论(0)