2. 开发环境搭建:宿主机要求与源码准备
做嵌入式开发,环境搭建是第一道坎。我见过太多人卡在这一步——不是装错包,就是版本对不上。说白了,Yocto 对环境的要求其实很明确,咱们一步步来。
2.1 宿主机硬件与系统要求
先说说硬件。Yocto 编译起来挺吃资源的,我自己的经验是:
- CPU:4 核以上,8 核更舒服。编译时能开多线程,省时间。
- 内存:至少 8GB,16GB 是推荐值。我试过 4GB 的机器,编译到一半直接 OOM 了。
- 磁盘:至少 100GB 空闲空间。一个完整的 Yocto 构建,轻松吃掉 50-80GB。
- 系统:Ubuntu 22.04 LTS(64 位)。这是官方长期支持版本,兼容性最好。
注意: 别用 Ubuntu 24.04 或 20.04 替代。22.04 是经过 Yocto 官方验证的版本,换版本可能遇到奇怪的依赖问题。
2.2 安装必要软件包
系统装好后,第一件事就是装依赖。Yocto 需要一堆工具链和库,缺一个都可能编译失败。
我个人习惯用 apt 一次性装完,省得后面反复补包:
sudo apt update
sudo apt install -y \
gawk wget git diffstat unzip texinfo gcc build-essential \
chrpath socat cpio python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping python3-git python3-jinja2 \
libegl1-mesa libsdl1.2-dev xterm python3-subunit \
mesa-common-dev zstd liblz4-tool file locales libacl1
装完后,检查一下关键工具版本:
| 工具 | 最低版本 | 验证命令 |
|---|---|---|
| Git | 2.25+ | git --version |
| Python | 3.8+ | python3 --version |
| GCC | 11.0+ | gcc --version |
| tar | 1.28+ | tar --version |
小技巧: 如果遇到
locale 警告,运行 sudo locale-gen en_US.UTF-8 就能解决。我刚开始搞 Yocto 时被这个警告折腾了半天。
2.3 配置 Git 与 Repo
Yocto 的源码管理依赖 Git 和 Repo。Repo 是 Google 出的多仓库管理工具,Yocto 用它来管理 Poky 和各个 layer。
先配 Git 的用户信息,这是基础:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global color.ui auto
然后装 Repo。我建议用官方方式安装:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH
记得把 export PATH=~/bin:$PATH 加到 ~/.bashrc 里,不然每次开终端都要重新设。
避坑指南: 我曾经因为网络问题,Repo 下载失败了好几次。如果你也遇到类似情况,可以试试用国内镜像源,或者挂代理。Repo 脚本本身很小,但第一次运行时会自动更新,那一步需要联网。
2.4 下载 Yocto 源码(Poky)
环境配好了,接下来就是拉源码。Poky 是 Yocto 的参考发行版,也是我们课程的基础。
我习惯用 Repo 来管理,这样后续加 layer 方便:
mkdir ~/yocto
cd ~/yocto
repo init -u https://git.yoctoproject.org/poky -b kirkstone
repo sync
这里解释一下参数:
-u:指定 manifest 仓库地址,Poky 是官方主仓库-b kirkstone:指定分支。kirkstone 是 LTS 版本,稳定且文档齐全repo sync:拉取所有子仓库的代码
下载完成后,目录结构大概是这样的:
~/yocto/
├── poky/
│ ├── bitbake/ # 构建引擎
│ ├── meta/ # 核心层
│ ├── meta-poky/ # Poky 发行版配置
│ ├── meta-yocto-bsp/ # 板级支持包
│ ├── scripts/ # 辅助脚本
│ └── oe-init-build-env # 环境初始化脚本
└── .repo/ # Repo 管理目录
说明: 如果你不想用 Repo,也可以直接
git clone Poky 仓库。但我个人推荐 Repo,因为后面加 meta-openembedded、meta-raspberrypi 等 layer 时,Repo 能统一管理版本,避免冲突。
2.5 验证环境是否就绪
源码下载完,咱们跑一个简单的验证,确保环境没问题:
cd ~/yocto/poky
source oe-init-build-env build_qemuarm
这个命令会做三件事:
- 设置 Yocto 环境变量
- 创建
build_qemuarm构建目录 - 生成默认的
local.conf和bblayers.conf
如果终端提示符变成了 build_qemuarm 开头,说明环境初始化成功。你可以试试:
bitbake -s | grep qemu
能看到一堆 qemu 相关的包名,就证明一切正常。
注意: 第一次运行
source oe-init-build-env 时,如果提示缺少某些 Python 模块,别慌。用 pip3 install 模块名 补上就行。我遇到过缺 jinja2 的情况,装完就好了。
2.6 本章知识结构
下面这张图总结了开发环境搭建的完整流程,你可以对照着检查自己走到哪一步了:
到这步,你的开发环境就搭好了。整个过程大概需要 30 分钟到 1 小时,主要花在下载源码上。别急,慢工出细活。