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 |
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 解析出错。我当时折腾了两天才发现是系统库不兼容。嗯,稳定版才是王道。
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 都编译不了。
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 本章知识体系
下面这张图,帮你把整个环境搭建的流程串起来:
这张图把整个流程串起来了:从硬件准备,到系统安装,再到软件包安装、源码下载、Git 配置,最后验证环境。每一步都是下一步的前提,缺一不可。
好了,环境搭建就到这里。记住一句话:环境搭得好,编译没烦恼。我当年第一次编译 Yocto,光环境就折腾了两天。你现在跟着这个流程走,应该一小时内就能搞定。
可可精品资料库