4. Buildroot基本配置:make menuconfig界面介绍、Target options配置、Build options配置

好,咱们接着往下走。上一章我们把Buildroot源码拉下来了,也试了试默认编译。这一章,我带你真正走进Buildroot的配置世界。

说实话,我第一次打开make menuconfig的时候,也有点懵。选项太多了,密密麻麻的。但别怕,咱们一步步来。你只要记住一个原则:用多少配多少,别贪多

4.1 make menuconfig 界面长什么样?

在Buildroot源码根目录下,执行:

make menuconfig

你会看到一个蓝底白字的界面。嗯,就是那种经典的Linux内核配置风格。上下左右键移动光标,回车进入子菜单,空格或Y键选中,N键取消,按两次ESC退出。

我个人习惯先按 ? 键看看帮助。每个选项都有简短说明,告诉你这个选项是干嘛的。刚开始不熟的时候,多看看帮助没坏处。

小技巧:/ 键可以搜索选项名称。比如你想找某个驱动,直接搜关键字,比翻菜单快多了。

4.2 Target options —— 选对目标硬件

这是配置的第一步,也是最关键的一步。说白了,就是告诉Buildroot:你要给哪个芯片做系统?

进入 Target options,你会看到:

  • Target Architecture —— 选CPU架构。ARM、x86、MIPS、RISC-V等等。我做过一个项目,客户给的芯片是ARM Cortex-A7,结果有人选成了ARM Cortex-M,编译出来的东西根本跑不起来。嗯,这里要注意。
  • Target Architecture Variant —— 具体型号。比如ARM下面有cortex-a7、cortex-a53、cortex-a72。选错了,编译器生成的指令集可能不兼容。
  • Target ABI —— 二进制接口。ARM平台常见的是EABI或EABIhf。如果你用硬浮点,就选EABIhf,性能好很多。
  • Target Binary Format —— 可执行文件格式。一般都是ELF,不用动。
  • Target Options —— 其他杂项。比如是否启用NEON、VFP等。
核心要点: Target options 决定了交叉编译器的目标。选错了,后面所有包都白编译。我曾经在调试一个i.MX6ULL的项目时,发现系统启动后浮点运算总报错,查了两天才发现是ABI选成了EABI,而芯片是硬浮点的。换成EABIhf后一切正常。

4.3 Build options —— 控制编译行为

这个菜单管的是“怎么编译”,而不是“编译什么”。我建议你重点关注这几个:

选项 说明 我的建议
Build output directory 编译输出目录,默认是 output/ 保持默认就行。如果你有多个项目,可以改成 output_xxx 区分
Number of jobs to run simultaneously 并行编译的线程数 设成你CPU核心数+1。比如4核就设5,能快不少
Enable compiler cache 启用ccache,加速重复编译 强烈建议开启。我第一次编译完整系统花了40分钟,开启后第二次只要10分钟
Strip target binaries 去除调试符号,减小体积 生产环境必开。开发调试时可以关掉,方便gdb调试
Root filesystem overlay directories 根文件系统覆盖目录 这个后面会细讲,用来放你自己的配置文件
注意: 如果你改了 Build output directory,记得把 output/ 下的内容删掉或备份。Buildroot不会自动清理旧目录,容易搞混。

还有一个选项叫 Download directory,默认是 dl/。所有源码包都下载到这里。我习惯把它设成一个共享目录,比如 /home/share/buildroot_dl,这样多个项目可以共用,省流量。

4.4 知识体系结构图

下面这张图,是我自己整理的Buildroot配置核心逻辑。你看一眼,心里就有谱了。

Buildroot 配置核心逻辑 make menuconfig Target options Build options Toolchain / Packages Target options 子项 • 架构 (ARM/x86/MIPS...) • 变体 (cortex-a7/a53...) • ABI (EABI/EABIhf) • 浮点/NEON 选项 Build options 子项 • 输出目录 • 并行编译数 • ccache 缓存 • strip / overlay 后续章节展开 • 工具链配置 • 包选择 • 内核配置 • 文件系统配置 先定硬件 → 再定编译方式 → 最后选软件包

4.5 配置完怎么保存?

配置完成后,按 Tab 键选择 Save,然后回车。默认保存到 .config 文件。你也可以另存为其他名字,比如 my_project_defconfig,方便以后复用。

我个人习惯把配置文件和项目放在一起。比如:

cp .config configs/my_board_defconfig

这样下次直接 make my_board_defconfig 就能恢复配置,不用重新选一遍。

避坑指南: 我曾经在配置完忘记保存,直接退出了。结果重新编译时发现所有选项都是默认的,白白浪费了半小时。所以,每次改完配置,第一件事就是保存。

4.6 配置文件的本质

你打开 .config 看看,其实就是一堆 BR2_xxx=yBR2_xxx=n 的变量。比如:

BR2_arm=y
BR2_cortex_a7=y
BR2_TOOLCHAIN_BUILDROOT=y
BR2_PACKAGE_BUSYBOX=y

说白了,make menuconfig 就是个图形化的编辑器,帮你生成这个文件。你完全可以用文本编辑器手动改,但容易出错。我建议还是用菜单界面,至少它帮你做了合法性检查。

嗯,这一章就到这里。配置是Buildroot的第一步,也是最重要的一步。你花10分钟把Target options和Build options搞明白,后面就能省下好几个小时的排错时间。


专注资料整理