第1章:环境准备——Linux主机要求、安装必要依赖包、配置Git和Repo、磁盘空间规划
各位同学,咱们正式开始。
搭建Buildroot交叉编译环境,第一步不是下载代码,而是先把你的“工作台”收拾利索。我见过太多人一上来就git clone,结果编译到一半报错,回头一看——哦,依赖没装全。嗯,这种坑咱们今天一次性填平。
1.1 Linux主机要求
先说硬件。Buildroot本身不挑机器,但交叉编译是个体力活。我个人建议:
- CPU:4核以上。我试过双核编译一个完整系统,去泡了杯咖啡回来还在跑……后来换了8核,时间直接砍半。
- 内存:至少8GB。16GB更稳。为什么?因为编译过程中有些大包(比如Qt、WebKit)会吃内存,8GB勉强够,16GB你可以在编译的同时开浏览器查资料。
- 硬盘:至少50GB空闲空间。这个后面细说。
- 操作系统:Ubuntu 20.04 LTS 或 Debian 11 以上。我个人偏爱Ubuntu 22.04,包比较新,省事。
注意:别用Windows WSL1,文件系统性能太差。WSL2勉强可以,但我还是推荐原生Linux或者虚拟机里装Ubuntu。
1.2 安装必要依赖包
这是最容易出问题的一步。我刚开始做嵌入式时,就因为在Ubuntu上少装了一个libncurses-dev,结果menuconfig界面死活打不开。后来学乖了,直接装全。
在Ubuntu/Debian上,执行以下命令:
sudo apt update
sudo apt install -y \
build-essential \
git \
repo \
wget \
cpio \
unzip \
file \
rsync \
bc \
python3 \
python3-distutils \
libncurses-dev \
libssl-dev \
flex \
bison \
gcc-multilib \
libc6-dev-i386 \
lib32z1 \
lib32stdc++6
这里我解释几个关键包:
build-essential:编译工具链,gcc、g++、make都在里面。libncurses-dev:没有它,你打不开make menuconfig。libssl-dev:很多包下载需要HTTPS支持。flex和bison:词法分析和语法分析工具,Buildroot内部会用到。gcc-multilib:如果你要编译32位目标,这个必须装。
小技巧:装完后可以用
dpkg -l | grep <包名>检查是否装上了。我曾经在Debian上漏了python3-distutils,结果编译到一半报错,排查了半天。
1.3 配置Git和Repo
Buildroot的源码管理用的是Git,而Repo是Google出的多仓库管理工具。虽然Buildroot本身只有一个仓库,但如果你后续要管理多个BSP(板级支持包),Repo会非常方便。
配置Git:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global color.ui auto
这里有个细节——user.name和user.email不配也行,但提交代码时会报错。我个人习惯配成公司邮箱,方便追溯。
安装Repo:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc
验证一下:
repo --version
如果看到版本号,说明装好了。
注意:Repo依赖Python 3。如果你系统里默认Python是2.7,记得装python-is-python3这个包。我踩过这个坑,Repo脚本直接报语法错误。
1.4 磁盘空间规划
这是很多人忽略的一步。Buildroot编译过程中,会下载源码包、生成中间文件、最终输出镜像。我算过一笔账:
| 项目 | 预估空间 | 说明 |
|---|---|---|
| Buildroot源码 | 约500MB | 包含所有构建脚本 |
| 下载的源码包(dl目录) | 2~5GB | 取决于你选的包,比如Qt、GStreamer都很大 |
| 编译输出(output目录) | 5~15GB | 包含工具链、根文件系统、内核镜像 |
| 临时文件 | 2~5GB | 编译过程中产生的中间文件 |
| 总计 | 10~25GB | 建议预留50GB以上 |
我个人建议这样规划目录结构:
~/buildroot/
├── dl/ # 下载的源码包(可复用)
├── output/ # 编译输出
└── buildroot/ # 源码目录
为什么要单独分出dl目录?因为如果你同时维护多个板子,源码包可以共享,不用重复下载。我当年在公司就是这么干的,省了至少10GB空间。
提示:如果你硬盘空间紧张,可以定期清理
output/build/下的编译中间文件。用make clean就行,但注意这会清掉所有编译产物,下次得重新编译。
1.5 验证环境
装完所有东西后,我习惯跑一个快速验证:
which git
which repo
gcc --version
python3 --version
如果都能正常输出,恭喜你,环境准备好了。
嗯,这一章内容不多,但都是实打实的经验。别嫌麻烦,把这一步做扎实了,后面编译的时候你会感谢自己的。
下一章,咱们开始下载Buildroot源码,并做第一次配置。