3. Yocto开发环境搭建:宿主机要求、安装必要工具、配置Git和Repo
说实话,很多人在Yocto上栽跟头,不是因为不会写配方,而是开发环境没搭对。我见过太多同事花了两天时间编译,最后报个莫名其妙的错,一查发现是Ubuntu版本不对,或者硬盘空间不够。嗯,咱们先把地基打牢。
3.1 宿主机硬件要求
Yocto编译是个吃硬件的活。你别指望拿个4GB内存的笔记本就能跑,那会把你逼疯的。我个人建议,至少满足以下配置:
| 硬件项 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 4核 | 8核及以上 |
| 内存 | 8GB | 16GB或更高 |
| 硬盘 | 100GB空闲 | 250GB+ SSD |
| 网络 | 宽带连接 | 稳定光纤 |
3.2 操作系统要求
Yocto官方对宿主机的Linux发行版有明确要求。说白了,你最好用长期支持版(LTS)的Ubuntu或Debian。我自己的主力机是Ubuntu 22.04 LTS,跑Yocto 4.x(Kirkstone)非常稳。
支持的发行版列表(以Yocto 4.0 Kirkstone为例):
- Ubuntu 22.04 LTS(推荐)
- Ubuntu 20.04 LTS
- Debian 11 (Bullseye)
- Fedora 36+
- CentOS 7 / RHEL 8
3.3 安装必要工具
Yocto构建系统依赖一堆基础工具。你想想看,它要下载源码、打补丁、编译、打包,每一步都需要对应的命令行工具。我习惯用一个命令把基础包全装了:
sudo apt-get update
sudo apt-get install -y \
gcc g++ make cmake \
git repo \
python3 python3-pip python3-venv \
chrpath diffstat texinfo \
gawk wget file unzip \
bzip2 xz-utils zstd \
libssl-dev libncurses-dev \
locales
这里我重点说几个容易忽略的:
- chrpath:用于修改ELF文件的rpath,Yocto在打包时会用到。少了它,编译到一半会报错。
- diffstat:生成补丁的统计信息。虽然不影响编译结果,但Yocto的构建日志会依赖它。
- texinfo:生成info文档。有些包的configure脚本会检查它。
- zstd:高压缩比的压缩工具。Yocto从Honister版本开始,默认用zstd压缩sstate缓存。
核心要点: 安装完成后,建议运行以下命令验证环境:
python3 --version
git --version
repo --version
chrpath --version 2>/dev/null && echo "chrpath OK" || echo "chrpath MISSING"
3.4 配置Git
Yocto的源码管理重度依赖Git。你想想看,它要从几百个Git仓库拉取代码,如果Git没配好,后面全是坑。我个人习惯先配好全局用户信息:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
然后,我建议把Git的缓存调大一点。Yocto的仓库都很大,默认的缓存容易撑爆:
git config --global http.postBuffer 524288000
git config --global core.compression 0
为什么要关掉压缩?因为Yocto的很多仓库已经是压缩过的,再压缩反而降低性能。我在项目中遇到过,开着压缩拉取poky仓库,速度慢得让人抓狂。
git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy http://proxy.example.com:8080
3.5 配置Repo工具
Repo是Google开发的仓库管理工具,Yocto用它来管理多个Git仓库。说白了,一个Yocto项目可能包含poky、meta-openembedded、meta-raspberrypi等十几个仓库,Repo帮你一键同步。
安装Repo很简单:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=$PATH:~/bin/repo
记得把~/bin加到.bashrc里,不然每次开终端都要重新export:
echo 'export PATH=$PATH:~/bin/repo' >> ~/.bashrc
验证Repo是否安装成功:
repo --version
如果看到版本号,说明搞定了。
3.6 整体环境搭建流程
我把整个流程画了张图,方便你对照操作:
3.7 环境验证清单
全部配置完成后,我建议你对照这个清单检查一遍,确保万无一失:
| 检查项 | 验证命令 | 预期结果 |
|---|---|---|
| Python版本 | python3 --version |
≥ 3.8 |
| Git版本 | git --version |
≥ 2.25 |
| Repo版本 | repo --version |
显示版本号 |
| chrpath | chrpath --version |
显示版本号 |
| 磁盘空间 | df -h |
空闲 ≥ 100GB |