2. 搭建Yocto开发环境

好,咱们正式开始动手了。搭建开发环境这件事,说难不难,说简单吧,我见过太多人在这里栽跟头。说白了,环境没搭好,后面全是坑。今天我就把我在多个项目中踩过的坑、积累的经验,一次性给你讲清楚。

宿主机要求:别让你的机器拖后腿

Yocto是个吃资源的家伙。我第一次用Yocto时,拿了个4GB内存的笔记本硬跑,结果编译到一半直接卡死。嗯,那滋味真不好受。

先看看官方推荐的最低配置:

项目 最低要求 推荐配置
CPU 双核 x86_64 4核以上
内存 4GB 8GB+
磁盘空间 50GB 100GB+ SSD
操作系统 Ubuntu 20.04+ / CentOS 7+ Ubuntu 22.04 LTS
注意:千万别用Windows直接搞Yocto。虽然WSL2勉强能用,但我曾经在WSL2上折腾了三天,最后还是切回了原生Linux。你想想看,何必跟自己过不去?

我个人习惯用Ubuntu 22.04 LTS。为什么?因为社区支持最好,遇到问题随便一搜就有答案。你要是用个冷门发行版,出错了连个问的人都没有。

安装必要软件包:一个都不能少

Yocto对宿主机软件包有硬性要求。少了某个包,编译到一半突然报错,那才叫崩溃。我在项目中遇到过好几次,因为漏装了chrpath,结果折腾了半天才发现。

直接上命令,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 xterm python3-subunit mesa-common-dev zstd liblz4-tool

如果你是CentOS/RHEL系:

sudo yum install gawk make wget tar bzip2 gzip python3 unzip perl patch \
  diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath \
  ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue \
  socat python3-pexpect findutils which file cpio python3-pip \
  python3-git python3-jinja2 xz SDL-devel xterm
小技巧:装完后可以用 which git gawk python3 快速验证一下。我每次搭新环境都会跑一遍这个命令,确保核心工具都在。

配置Git与Repo:版本管理的基石

Git配置其实很简单,但有两个地方容易忽略。一个是用户名和邮箱,另一个是缓存凭证。

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

为什么要配邮箱?因为Yocto的提交记录里会用到。我曾经忘了配,结果bitbake解析某些layer时报错,查了半天才发现是Git没配置好。

接下来是Repo工具。Repo是Google开发的,用来管理多Git仓库的神器。Yocto的源码分散在几十个仓库里,手动一个个clone?别傻了。

mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=$PATH:~/bin

记得把export PATH=$PATH:~/bin加到~/.bashrc里,不然每次开终端都要重新执行。

下载Poky源码:迈出第一步

Poky是Yocto的参考发行版,也是我们学习的起点。下载它,说白了就是一条命令的事:

mkdir yocto-project
cd yocto-project
repo init -u https://git.yoctoproject.org/poky -b kirkstone
repo sync

这里我选了kirkstone分支,它是Yocto 4.0 LTS版本,稳定且文档齐全。你想想看,学新东西当然要用最稳的版本。

repo sync会下载所有相关的仓库,包括bitbake、meta-openembedded等。这个过程取决于你的网速,快则几分钟,慢则半小时。我建议泡杯咖啡等着。

核心逻辑:整个环境搭建的流程可以用下面这张图来概括。它展示了从宿主机准备到源码下载的完整链路。
Yocto开发环境搭建流程 宿主机检查 CPU/内存/磁盘/OS 安装软件包 apt/yum 安装依赖 配置Git 用户名/邮箱/凭证 安装Repo 下载repo脚本 初始化Poky repo init + repo sync 验证环境 检查目录结构 ✅ 环境搭建完成 每个步骤都依赖前一步,缺一不可

验证环境:确认一切就绪

下载完成后,检查一下目录结构:

cd yocto-project
ls -la
# 你应该看到 poky/ 目录以及 .repo/ 目录

再试试能不能运行bitbake:

source poky/oe-init-build-env
bitbake --version

如果看到版本号输出,恭喜你,环境搭好了。如果报错,别慌。99%的情况是缺了某个软件包,回头检查一下安装步骤。

我的经验:第一次跑source oe-init-build-env时,它会自动创建build目录和conf配置文件。这个脚本很重要,后面每次编译前都要执行它。

好了,环境已经就绪。接下来我们就可以真正开始玩Yocto了。记住,环境搭得越稳,后面越省心。我曾经因为偷懒少装了一个包,结果排查了整整一个下午。你想想看,值不值?