第2章:环境准备:在Ubuntu上安装Buildroot依赖包,下载源码,了解目录结构
好,咱们正式开始动手了。
这一章说白了就是「磨刀不误砍柴工」。你想想看,如果连环境都没搭好,后面编译到一半报个依赖缺失,那才叫崩溃。我刚开始用Buildroot时就吃过这个亏——装了个最小化Ubuntu,结果make到80%突然停了,提示缺这缺那,查了半天才发现是少了几个基础库。
所以,咱们一步到位,把环境整利索。
2.1 安装Buildroot依赖包
Buildroot本质上是一个构建系统,它需要调用你主机上的各种工具。比如编译器、解析器、打包工具等等。Ubuntu 20.04/22.04 LTS是我个人最推荐的主机系统,稳定,包也全。
打开终端,执行下面这条命令:
sudo apt update
sudo apt install -y \
git \
make \
gcc \
g++ \
libncurses5-dev \
libncursesw5-dev \
flex \
bison \
bc \
cpio \
rsync \
unzip \
wget \
file \
python3 \
python3-pip \
python3-venv \
libssl-dev \
libelf-dev \
u-boot-tools \
device-tree-compiler \
swig \
libtool \
autoconf \
automake \
pkg-config \
gettext \
texinfo \
patch \
diffutils \
gawk \
sed \
grep \
tar \
gzip \
bzip2 \
xz-utils \
lz4 \
zstd \
cmake \
meson \
ninja-build
装完之后,验证一下关键工具:
gcc --version
make --version
git --version
python3 --version
嗯,看到版本号输出,基本就没问题了。
2.2 下载Buildroot源码
我个人习惯用Git克隆官方仓库。这样以后想切版本、看提交历史都很方便。
cd ~
git clone https://git.busybox.net/buildroot
cd buildroot
克隆完成后,你会看到当前目录下有一个 Makefile 文件。这就是Buildroot的入口。
如果你想用某个稳定版本(比如2023.11),可以切到对应的tag:
git tag -l '2023.11*'
git checkout 2023.11
2.3 了解Buildroot目录结构
好,源码下载完了。咱们来看看里面都有什么。我当初第一次打开这个目录时,说实话有点懵——文件夹太多了。但别怕,核心的就那么几个。
下面这张图是我自己整理的Buildroot核心目录结构,你一看就明白:
咱们挑几个重点目录说说:
| 目录 | 作用 | 我的经验 |
|---|---|---|
arch/ |
存放不同CPU架构的配置,比如ARM、x86、RISC-V | 做ARM板子时经常来这里看cache line大小 |
board/ |
板级支持包,包含设备树、分区表、启动脚本 | 这是你定制板子的主战场 |
configs/ |
预置的defconfig文件,比如树莓派、BeagleBone | 我一般从这里copy一份再改 |
package/ |
所有软件包的构建规则,每个包一个子目录 | 想加新软件?就在这里加 |
dl/ |
下载的源码包缓存,避免重复下载 | 这个目录可以备份,重装系统后直接拷回来 |
output/ |
编译产物,包括镜像、根文件系统、工具链 | make clean不会删这个,得make distclean |
重点记住: output/images/ 里面就是你最终要的镜像文件。比如 rootfs.tar、zImage、u-boot.bin。我每次编译完第一件事就是去这个目录看看文件大小对不对。
2.4 验证环境是否就绪
最后一步,咱们跑一个简单的测试,确保Buildroot能正常启动配置界面:
make list-defconfigs | head -20
如果能看到一长串的板子名称列表,比如 raspberrypi4_64_defconfig、beaglebone_defconfig 这些,说明环境已经OK了。
BR2_DL_DIR 环境变量指向一个共享目录,团队共用缓存。我在团队里就是这么干的,编译时间从40分钟降到了15分钟。
好了,环境准备好了,源码也下载了,目录结构也摸清了。接下来就可以真正开始配置我们的第一个Buildroot项目了。
可可精品资料库