当前位置:首页>Linux>Linux内核编译三板斧

Linux内核编译三板斧

  • 2026-10-11 07:48:13
Linux内核编译三板斧
在嵌入式Linux开发中,经常需要根据不同的硬件平台编译定制内核。Linux支持x86、ARM、RISC-V等架构,不同CPU架构的初始化代码和汇编指令截然不同,这就要求在编译前做好一系列关键设置。
很多新手在刚开始编译内核源码时一脸懵,其实只要掌握“三板斧”,编译内核就会变得十分简单:指定架构、指定交叉编译工具链、选择配置文件。下面我们一步步来看。

第一板斧:指定目标架构(ARCH)

上期我们说到,Linux内核源码的arch/目录下存放了各个架构的代码,在编译时需要明确告诉系统我们要编译哪个架构。这是通过环境变量ARCH来实现的。例如,我手中的开发板是全志的D1s,属于RISC-V架构的芯片,首先将目录切换到源码目录,就在终端输入:

cd /内核源码路径/export ARCH=riscv

第二板斧:指定交叉编译工具链(CROSS_COMPILE)

嵌入式设备性能往往较弱,无法直接运行本地编译工具,因此需要在PC上使用交叉编译工具链,生成目标平台的可执行代码。那么会有人问交叉编译工具链是什么?一句话总结:在一个平台(PC)上编译出另一个平台(RISC-V)上能运行的文件。

这里简单介绍一下交叉编译器的目录结构。

/你的交叉编译器路径/└── bin/    ├── riscv64-unknown-linux-gnu-gcc        # C 编译器    ├── riscv64-unknown-linux-gnu-ld         # 链接器    ├── riscv64-unknown-linux-gnu-as         # 汇编器    ├── riscv64-unknown-linux-gnu-ar         # 静态库打包工具    ├── riscv64-unknown-linux-gnu-objcopy    # 格式转换工具    └── ...                                  # 其他工具

指定工具链路径依靠环境变量 CROSS_COMPILE。假设你的交叉编译工具链安装在:

export CROSS_COMPILE=/你的交叉编译器路径/bin/riscv64-unknown-linux-gnu-

第三板斧:选择并应用配置文件

Linux内核支持高度模块化裁剪,不同的板子需要不同的驱动和功能。配置通过一个名为.config 的文件来管理,而预定义的配置文件都放在 arch/$(ARCH)/configs 目录下。如果你是RISC-V架构,配置文件就位于 arch/riscv/configs/。一般芯片或板卡厂商会提供一个默认配置文件defconfig,我们直接用命令指定即可,至于这个配置文件如何编写,初学者暂时无需详细了解。进入内核源码根目录,执行:

make 你的配置文件名称_defconfig

最后一步就是编译了,在终端上输入:

make -jx  #x是表示同时使用x个线程编译,你可以根据电脑的CPU核心数调整这个数字,加快编译速度。

至此,内核编译的所有步骤就完成了,总结一下。

cd /内核源码目录export ARCH=riscvexport CROSS_COMPILE=工具链前缀make xxx_defconfigmake -jx

最新文章

随机文章