真没有想到,在编译过内核的源码目录下,你可以找到两个同叫vmlinux的文件。
$find . -name vmlinux
./vmlinux
./arch/x86/boot/compressed/vmlinux
怎么样,你之前有发现过么?这还是在探索vmlinux.bin的过程中发现的秘密。
他们究竟都是干什么用的?有什么联系?和bzImage之间有关联么?让我们来揭开这神秘的面纱。
隐藏的vmlinux
老规矩,先来看看vmlinux.bin的规则。
$(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE
$(call if_changed,objcopy)
嗯,看到刚才find中发现的vmlinux了不?原来vmlinux.bin是这个vmlinux通过objcopy而来。那这个都包含了谁? 又和根目录下的vmlinux有什么关系呢?你们俩真是太像了。
$(obj)/compressed/vmlinux: FORCE
$(Q)$(MAKE) $(build)=$(obj)/compressed $@<