目录
一、make xxx_defconfig过程
1、分析顶层 Makefile
二、make 过程
1、 执行 make 时,分析顶层 Makefile:
2、vmlinux 文件的生成:
3、 built-in.o 文件编译生成过程
4、分析 “@make -f ./scripts/Makefile.build obj=init ” 命令
5、make zImage 过程
(1)使用“make”、“make all”、“make zImage”这些命令就可以编译出 zImage 镜像,在
arch/arm/Makefile 中有如下代码:
(2) vmlinux、Image、zImage、uImage 的区别
① vmlinux 是编译出来的最原始的内核文件,是未压缩的ELF 格式的文件,但是在实际中我们不会使用 vmlinux,而是使用 zImage 或 uImage 这样的 Linux 内核镜像文件,vmlinux 差不多有16MB;
② Image 是 Linux 内核镜像文件,但是 Image 仅包含可执行的二进制数据。 Image 就是使用 objcopy 取消掉 vmlinux 中的一些其他信息,比如符号表什么的。但是 Image 是没有压缩过的, Image 保存在 arch/arm/boot 目录下,其大小大概在 12MB 左右;
③zImage 是经过 gzip 压缩后的 Image,经过压缩以后其大小大概在 6MB 左右;
④ uImage 是老版本 uboot 专用的镜像文件, uImag 是在 zImage 前面加了一个长度为 64字节的“头”,这个头信息描述了该镜像文件的类型、加载位置、生成时间、大小等信息。但是新的 uboot 已经支持了 zImage 启动!所以已经很少用到 uImage 了。