3月8号作业

文章详细阐述了vmlinux可执行文件的生成过程,涉及到Makefile中的规则和link-vmlinux.sh脚本的使用。同时,解释了内核编译过程中uImage、zImage、Image与vmlinux的关系,以及编译链接的参数设置,如压缩调试信息和构建ID。此外,提到了驱动文件如何集成到built-in.a中,进而构建内核镜像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

题目一:vmlinux可执行文件如何产生

题目二:整理内核编译流程:uImage,zImage,Image,vmlinux之间的关系

答案一:在内核源码目录下vi Makefile,搜索vmlinux目标,

vmlinux: scripts/link-vmlinux.sh autoksyms_recursive $(vmlinux-deps) FORCE

+$(call if_changed,link-vmlinux)

搜索cmd_link-vmlinux,

cmd_link-vmlinux = \

$(CONFIG_SHELL) $< "$(LD)" "$(KBUILD_LDFLAGS)" "$(LDFLAGS_vmlinux)";

$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)

$(CONFIG_SHELL) = sh

$< =scripts/link-vmlinux.sh:可执行文件

$(LD)=arm-linux-gnuihf-ld:链接,参数1

$(KBUILD_LDFLAGS)=--compress-debug-sections=zlib:参数2

$(LDFLAGS_vmlinux)=--build-id=sha1:参数3

$(ARCH_POSTLINK)= $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)

cmd_link-vmlinux =sh scripts/link-vmlinux.sh "arm-linux-gnuihf-ld" "--compress-debug-sections=zlib" "--build-id=sha1",arch/arm/Makefile.postlink没有这个文件,所以$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)返回空字符串。

打开link-vmlinux.sh文件发现

可知各个驱动文件夹下的built-in.a文件通过link-vmlinux.sh生成vmlinux镜像文件

可知各个有应用到的驱动文件夹下的.c.o驱动文件集合到built-in.a文件里

答案二:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值