2. 开发环境搭建

说实话,Yocto 项目对环境的要求,比一般嵌入式开发要高不少。我第一次搭建时也踩过坑——磁盘分区不够,编译到一半直接报错退出,那叫一个崩溃。所以这一节,我把关键点都给你捋清楚。

2.1 宿主机硬件要求

先说说硬件。Yocto 编译本质上是个「吃资源」的活。你想想看,它要下载几百个源码包,解压、打补丁、配置、编译,最后还要打包成镜像。整个过程下来,对 CPU、内存、磁盘都是考验。

硬件项 最低要求 推荐配置 备注
CPU 双核 x86_64 4核及以上 多核编译能大幅缩短时间
内存 4 GB 8 GB 或更多 低于 4GB 编译时容易 OOM
磁盘空间 50 GB 空闲 100 GB 以上 SSD 效果更佳
文件系统 ext4 ext4 / btrfs 不要用 NTFS 或 FAT
注意:磁盘空间这块,我建议你至少留出 100 GB。为什么?因为 Yocto 的 build 目录里会存放下载的源码、编译中间产物、最终镜像。我做过一个全功能系统镜像,光 tmp 目录就占了 60 GB。50 GB 真的只是「能跑起来」的底线。

2.2 Linux 发行版选择

Yocto 官方支持的主流发行版包括 Ubuntu、Debian、Fedora、CentOS 等。我个人习惯用 Ubuntu 20.04 LTS 或 22.04 LTS,因为社区活跃,遇到问题容易搜到解决方案。

这里有个坑:不要用太新的发行版。比如 Ubuntu 24.04 刚出来时,某些 Python 库版本过高,导致 Yocto 的 bitbake 解析出错。我当时折腾了两天才发现是系统库不兼容。嗯,稳定版才是王道。

小技巧:如果你只有 Windows 或 macOS 机器,可以用虚拟机(VirtualBox / VMware)安装 Ubuntu。但注意给虚拟机分配至少 4 核 CPU 和 8 GB 内存,否则编译速度会让你怀疑人生。

2.3 安装必要软件包

Yocto 依赖一堆基础工具。别怕,一条命令就能装完。以 Ubuntu/Debian 为例:

sudo apt update
sudo apt install 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 pylint3 xterm python3-subunit mesa-common-dev zstd \
    liblz4-tool file locales libacl1

这里面有几个关键工具,我单独说一下:

  • Python 3:Yocto 的核心构建工具 BitBake 是用 Python 写的。版本要求 3.5 以上,推荐 3.8+。
  • Git:用来下载 Poky 源码和各个层的仓库。版本 1.8.3.1 以上即可。
  • tar:解压各种源码包。没什么特殊要求,系统自带就行。
  • gcc / build-essential:编译 C 代码的工具链。没有它,你连 hello world 都编译不了。
重点:如果你用的是 Fedora 或 CentOS,包管理器换成 dnf 或 yum,包名略有不同。比如 Ubuntu 的 build-essential 在 Fedora 里对应 @development-tools。别搞混了。

2.4 下载 Poky 源码

Poky 是 Yocto 项目的参考发行版,也是我们学习的起点。下载方式很简单,用 Git 克隆:

git clone git://git.yoctoproject.org/poky
cd poky
git checkout -b my-scarthgap origin/scarthgap

这里我解释一下:scarthgap 是 Yocto 的一个长期支持版本(LTS),稳定性好,适合学习。我建议你一开始就跟着 LTS 版本走,别追最新版。最新版往往有未修复的 bug,我在项目中吃过这个亏。

下载完成后,你会看到 poky 目录下有几个关键子目录:

  • meta:核心的配方和配置文件
  • meta-poky:Poky 发行版特有的配置
  • meta-yocto-bsp:板级支持包
  • bitbake:构建工具本身
  • documentation:官方文档

嗯,这里要注意:poky 本身就是一个完整的 Yocto 构建环境。你不需要额外下载其他层,除非你要支持特定的硬件平台。

2.5 配置 Git 用户信息

Yocto 在构建过程中会用到 Git 来管理补丁和源码。所以,你得先告诉 Git 你是谁。运行以下命令:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"

为什么要配这个?因为 Yocto 的 devtool 和 patch 工具在创建补丁时,会自动添加作者信息。如果你没配,Git 会报错,或者生成一堆「unknown」的提交记录。我曾经见过同事没配邮箱,结果补丁提交到上游时被退回,尴尬得很。

另外,建议你顺便配一下这些:

git config --global color.ui auto
git config --global core.editor vim

前者让 Git 输出带颜色,方便阅读。后者设置默认编辑器,看个人喜好,我用 vim 习惯了。

2.6 验证环境是否就绪

装完所有东西后,我们来做个快速检查:

python3 --version
git --version
tar --version
gcc --version

确保每个命令都能正常输出版本号。然后进入 poky 目录,试试能不能初始化构建环境:

source oe-init-build-env

如果没报错,说明环境基本就绪了。你会看到终端提示符前面多了个 build 字样,表示进入了构建环境。

提示:每次打开新终端,都要重新执行 source oe-init-build-env 才能进入构建环境。我习惯在 .bashrc 里加个别名,比如 alias yocto='cd ~/poky && source oe-init-build-env',省事。

2.7 本章知识体系

下面这张图,帮你把整个环境搭建的流程串起来:

Yocto 开发环境搭建流程 硬件准备 CPU ≥ 4核 / 内存 ≥ 8G / 磁盘 ≥ 100G 系统安装 Ubuntu 20.04 / 22.04 LTS 安装软件包 Python3 / Git / gcc / tar 等 下载 Poky 源码 git clone git://git.yoctoproject.org/poky 配置 Git 用户信息 git config --global user.name / user.email ✅ 验证环境:source oe-init-build-env

这张图把整个流程串起来了:从硬件准备,到系统安装,再到软件包安装、源码下载、Git 配置,最后验证环境。每一步都是下一步的前提,缺一不可。

好了,环境搭建就到这里。记住一句话:环境搭得好,编译没烦恼。我当年第一次编译 Yocto,光环境就折腾了两天。你现在跟着这个流程走,应该一小时内就能搞定。

最后提醒:如果你在安装过程中遇到任何报错,先检查网络连接。Yocto 需要从多个源下载源码包,网络不稳定会导致各种奇怪的问题。我曾经因为公司代理没配好,卡在下载阶段整整半天。

可可精品资料库