题目:
题目一: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)返回空字符串,所以vmlinux是由可执行文件link-vmlinux.sh生成
答案二: