2、环境准备:在Ubuntu 22.04上安装Buildroot依赖包,下载源码,了解目录结构
好,咱们正式开始动手了。这一章的目标很简单:把Buildroot的环境搭起来,然后看看它肚子里到底装了些什么。我见过不少新手,一上来就急着make,结果报错一堆,心态直接崩了。其实只要把依赖装好、源码下对,后面就顺了。
2.1 安装依赖包:别让“缺库”卡住你
Ubuntu 22.04是个不错的起点。我个人习惯用最小化安装,然后手动补依赖。Buildroot对宿主机的依赖不算多,但有几个关键包必须装。
打开终端,直接跑下面这条命令:
sudo apt update
sudo apt install -y \
build-essential \
libncurses-dev \
bison flex \
libssl-dev \
libelf-dev \
bc \
cpio \
unzip \
rsync \
file \
wget \
git
嗯,这里要注意:libncurses-dev 是图形化配置界面的基础,少了它你跑不了 make menuconfig。libssl-dev 和 libelf-dev 是编译内核时用的,我遇到过有人没装这两个,编译到一半报错,回头再装又得重来,浪费时间。
2.2 下载Buildroot源码:选对版本很重要
Buildroot的源码托管在GitHub上,也有官方镜像。我个人建议用LTS版本,稳定、文档全。2024年最新的LTS是2023.02.x系列,但咱们教程里用最新的稳定版就行。
下载方式有两种:
- 直接下载压缩包:去
https://buildroot.org/downloads/找到buildroot-2023.02.12.tar.gz(具体版本号以实际为准),然后解压。 - 用Git克隆:如果你想跟踪最新提交,可以用Git。但我建议新手用第一种,省事。
我一般这么干:
wget https://buildroot.org/downloads/buildroot-2023.02.12.tar.gz
tar -xzf buildroot-2023.02.12.tar.gz
cd buildroot-2023.02.12
解压后,你会看到一个 buildroot-2023.02.12 的目录。咱们后面所有操作都在这个目录里进行。
2.3 目录结构:Buildroot的“五脏六腑”
好,现在咱们进到目录里,看看里面都有啥。用 ls -l 看一眼:
drwxr-xr-x arch/ # 架构相关配置
drwxr-xr-x board/ # 板级支持包
drwxr-xr-x boot/ # 引导加载程序
drwxr-xr-x configs/ # 默认配置文件
drwxr-xr-x dl/ # 下载的源码包缓存
drwxr-xr-x docs/ # 文档
drwxr-xr-x fs/ # 文件系统生成
drwxr-xr-x linux/ # Linux内核相关
drwxr-xr-x output/ # 编译输出目录
drwxr-xr-x package/ # 软件包定义
drwxr-xr-x support/ # 辅助脚本
drwxr-xr-x toolchain/ # 工具链相关
-rw-r--r-- Makefile # 主Makefile
这里面有几个目录,你以后会天天打交道:
| 目录 | 作用 | 我的经验 |
|---|---|---|
dl/ |
存放从网上下载的所有源码包(tar.gz等) | 我第一次编译时,网络断了,结果所有包都得重下。后来我学会了把 dl/ 目录备份,换机器时直接拷过去,省流量。 |
output/ |
编译产物:内核、根文件系统、工具链等 | 这个目录会越来越大,我一般用 make clean 清理,但不会删 dl/。 |
board/ |
板级配置:设备树、分区表、启动脚本等 | 如果你要支持一块新板子,这里就是你的主战场。 |
configs/ |
预置的配置文件(比如 raspberrypi3_defconfig) |
我经常用 make list-defconfigs 看看有哪些现成的配置,省得从头配。 |
package/ |
所有软件包的构建规则(.mk文件) | 想加个新软件?就在这里写个 .mk 文件。 |
为了让你更直观地理解这些目录之间的关系,我画了一张图:
你看,configs/ 和 board/ 是“输入”,告诉Buildroot你要什么;dl/ 是“仓库”,存着原材料;output/ 是“工厂”,产出最终产品。这个流程搞清楚了,后面遇到问题你就能快速定位。
2.4 验证环境:跑个简单的配置试试
环境搭好了,咱们验证一下。先看看能不能进入配置界面:
make menuconfig
如果一切正常,你会看到一个蓝底白字的图形界面。这说明依赖包都装对了。如果报错说 ncurses 找不到,那就回头检查一下 libncurses-dev 装了没。
我个人习惯在第一次运行 make menuconfig 之前,先跑一下 make defconfig 生成一个默认配置,这样能避免一些选项没选导致的编译错误。你可以试试:
make defconfig
make menuconfig
看到配置界面后,随便浏览一下,然后按 Exit 退出,选择保存。这样你的 .config 文件就生成了。
dl/ 和 output/ 这两个目录搞清楚。前者是“缓存”,后者是“产物”。我建议你把 dl/ 目录单独备份,以后换机器或者重装系统,直接拷过来,能省下大量下载时间。
好了,环境准备好了,目录结构也摸清了。下一章咱们就开始真正配置一个项目,选目标板、配内核、加软件包。到时候你会发现,Buildroot其实没那么神秘。