ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

24-内核编译流程与镜像生成

24-内核编译流程与镜像生成


文章目录

    • 一、概述
    • 二、形象比喻:出版一本书
    • 三、内核编译完整流程
      • 3.1 vmlinux -> Image -> zImage
    • 四、RK3506 内核编译命令
      • 4.1 SDK 中的自动编译(mk-kernel.sh)
    • 五、编译产物位置
    • 六、编译过程关键输出解读
    • 七、编译优化选项
    • 八、zImage 启动流程
    • 九、常见编译错误
    • 📝 本章小结
    • 🏠 课后练习

这一章是内核篇的"实操编译",和第 10 章 U-Boot 编译是姊妹篇–第 10 章讲怎么编 U-Boot,这一章讲怎么编内核。建议现场敲一遍make,让大家看到从 .o 到 vmlinux 再到 zImage 的真实产出,别光看图。全章大约 25 分钟。这一章有一个重点也是新手最困惑的地方:一定要搞清 vmlinux、Image、zImage 这三个产物的区别。很多人编完内核不知道该烧哪个文件,就是因为这三个没分清。

开讲前先把四个学习目标念一遍,带着听。第一,vmlinux到Image到zImage这三个文件有什么区别?各自多大?第二,RK3506 内核编译的完整命令是什么?ARCH和CROSS_COMPILE怎么设置?第三,zImage的自解压头做了什么?为什么要解压?第四,增量编译和全量编译有什么区别?这四个问题分别对应第三节、第四节、第八节和第七节。其中第一个问题,三个文件的区别,是新手高频困惑点,会重点讲。

一、概述

Linux 内核从几十万个源码文件到最终可启动的zImage,经历了预处理->编译->汇编->链接->压缩等步骤。本章以 RK3506 的kernel-6.1为例,详细拆解整个编译过程。

学完本章你将能回答:

  • vmlinux->Ima
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进