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等。
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 | 根文件系统覆盖目录 | 这个后面会细讲,用来放你自己的配置文件 |
output/ 下的内容删掉或备份。Buildroot不会自动清理旧目录,容易搞混。
还有一个选项叫 Download directory,默认是 dl/。所有源码包都下载到这里。我习惯把它设成一个共享目录,比如 /home/share/buildroot_dl,这样多个项目可以共用,省流量。
4.4 知识体系结构图
下面这张图,是我自己整理的Buildroot配置核心逻辑。你看一眼,心里就有谱了。
4.5 配置完怎么保存?
配置完成后,按 Tab 键选择 Save,然后回车。默认保存到 .config 文件。你也可以另存为其他名字,比如 my_project_defconfig,方便以后复用。
我个人习惯把配置文件和项目放在一起。比如:
cp .config configs/my_board_defconfig
这样下次直接 make my_board_defconfig 就能恢复配置,不用重新选一遍。
4.6 配置文件的本质
你打开 .config 看看,其实就是一堆 BR2_xxx=y 或 BR2_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搞明白,后面就能省下好几个小时的排错时间。