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

这个命令会做三件事:

  1. 设置 Yocto 环境变量
  2. 创建 build_qemuarm 构建目录
  3. 生成默认的 local.conf 和 bblayers.conf

如果终端提示符变成了 build_qemuarm 开头,说明环境初始化成功。你可以试试:

bitbake -s | grep qemu

能看到一堆 qemu 相关的包名,就证明一切正常。

注意: 第一次运行 source oe-init-build-env 时,如果提示缺少某些 Python 模块,别慌。用 pip3 install 模块名 补上就行。我遇到过缺 jinja2 的情况,装完就好了。

2.6 本章知识结构

下面这张图总结了开发环境搭建的完整流程,你可以对照着检查自己走到哪一步了:

开发环境搭建流程 硬件检查 Ubuntu 22.04 安装 安装必要软件包 配置 Git 与 Repo 下载 Poky 源码 验证环境 关键指标 • CPU:4核+ • 内存:8GB+ • 磁盘:100GB+ 常用命令 • repo init -b kirkstone • repo sync • source oe-init-build-env

到这步,你的开发环境就搭好了。整个过程大概需要 30 分钟到 1 小时,主要花在下载源码上。别急,慢工出细活。