今天微博上看到宋宝华发的一张图,看着不错,保留了下来。
0 最顶层的vmlinux是如何生成的?
依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,带调试
信息、符号表的最初的内核,我用linux3.4.2编译出来有45M;
arm-linux-gnu-ld -EL -p --no-undefined -X -o vmlinux -T arch/arm/kernel/vmlinux.lds
-EL 文件小端存储,为默认
-T 连接依赖的脚本文件vmlinux.lds
built-in.o 是各个子目录下递归产生的中间文件,依次递归到内核根目录的built-in.o,就是vmlinux
arch/arm/kernel/init_task.o
init/built-in.o
--start-g