linux内核的链接脚本vmlinux.lds
问题1、链接器ld是如何知道链接脚本是vmlinux.lds并且放在arch/arm/kernel中的呢答案是在linux源码更目录下主Makefile文件中提到。vmlinux-lds : arch/$(SRCARCH)/kernel/vmlinux.lds如果继续搜索$(SRCARCH)在同一个Makefile文件中提到SRCARCH被赋值$(ARCH)而ARCH为arm链接器ld是如何知道链接脚本答案是arm-none-linux-gnueabi-ld -T vmlinux-lds具体应该是其中-T的意思是-Text以文本方式指定。(2)问题2链接脚本vmlinux.lds是怎样生成的答案有arch/arm/kernel中的vmlinux.lds.S这个汇编源文件由gcc编译器使用-E参数只预处理生成的但是用的是隐式的写法没有直接使用-E参数我也是通过AI知道的CPPFLAGS:指定C预处理参数生成vmlinux.lds文件是只预处理操作后面的编译器操作省略。extra-y:意思是排除vmlinux内核目标文件生成之外但是要编译后面的依赖项其中就包含了vmlinux.lds否则vmlinux.lds不会被生成的。

相关新闻