vmlinux可执行文件是如何生成的?
1.在内核源码目录的顶层目录下打开Makefile文件,在命令行查找vmlinux
可知vmlinux文件的生成依赖于vmlinux-deps
2.继续查找vmlinux-deps
可知vmlinux-deps文件的生成依赖于KBUILD_LDS,KBUILD_VMLINUX_OBJS,KBUILD_VMLINUX_LIBS三个文件
KBUILD_LDS是一个链接文件
可知 KBUILD_VMLINUX_OBJS,KBUILD_VMLINUX_LIBS的依赖关系
对libs-y进行寻找,在顶层目录下的Makefile找不到head-y目标,在arch/arm/目录下的Makefile寻找到
可知head-y的生成愈来愈MMUEXT
uImage/zImage/Image/vmlinx之间关系
1.Image和内核顶层目录下vmlinx关系
vmlinux通过objcopy格式化转换为Image。
2.rch/arm/boot/compressedvmlinux文件和Image之间关系
将Image镜像文件经过gzip压缩生成rch/arm/boot/compressed/vmlinx镜像文件
3.zImage和arch/arm/boot/compressed/vmlinux关系?
zImage是通过vmlinux格式化转换为的文件
4.uImage和zImage之间关系?
1)uImage使用在zImage使用mkimage工具得到的,uImage在zImage前添加64字节头部信息
2)每次编译打印信息的内容就是编译到uImage中内容
得到结论:
vmlinx--->objcopy--->Image--->gzip--->arch/arm/boot/compressed/vmlinx--->objcopy--->zImage--->mkimage--->uImage