开发环境搭建:宿主机要求、安装必要软件包、配置Git与Repo、下载Yocto源码

好,咱们正式开始动手了。搭建开发环境这件事,说简单也简单,说复杂也复杂。我见过不少新手,一上来就急着编译,结果卡在环境问题上折腾一整天。其实你想想看,磨刀不误砍柴工,把基础环境搞扎实了,后面会顺畅很多。

宿主机要求

Yocto项目对宿主机是有一定要求的。说白了,它本质上是一个大型的构建系统,需要大量的计算资源和存储空间。

硬件最低要求:

  • CPU:4核以上(我建议8核,编译时间能缩短一半)
  • 内存:8GB起步(16GB更佳,我在项目中用32GB的机器编译大型BSP)
  • 硬盘:至少100GB空闲空间(完整构建一次可能需要50-80GB)
  • 网络:稳定的宽带连接(第一次下载源码包会很大)

操作系统方面,Yocto官方主要支持Ubuntu和Fedora。我个人习惯用Ubuntu 20.04 LTS或22.04 LTS,这两个版本我踩过的坑最少。CentOS 7也能用,但需要额外配置一些东西。

注意:千万不要用Windows的WSL来跑Yocto!我曾经试过,结果文件系统权限问题搞得我焦头烂额。老老实实用原生Linux或者虚拟机吧。

安装必要软件包

Yocto构建过程中需要很多依赖工具。嗯,这里要注意,不同Ubuntu版本需要的包名可能略有差异。

对于Ubuntu 20.04/22.04,我一般这样安装:

sudo apt-get update
sudo apt-get 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 file locales libacl1

为什么装这么多?我简单解释几个关键的:

  • gawk:Yocto的bitbake解析器依赖它处理语法
  • chrpath:用于修改二进制文件的rpath,交叉编译时经常用到
  • socat:调试时用来转发串口或网络数据
  • zstd:高压缩比的归档工具,现在很多层都用它了

小技巧:如果你不确定缺了什么包,可以运行Yocto自带的检查脚本:

source oe-init-build-env
bitbake -p  # 如果报错,会提示缺少哪些依赖

配置Git与Repo

Git是Yocto的命脉。所有的源码、层、补丁都通过Git管理。我个人习惯先配置好Git的全局参数:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global color.ui auto
git config --global core.editor vim  # 我习惯用vim,你用nano也行

Repo工具是Google开发的,用于管理多个Git仓库。Yocto的源码结构就是多仓库的,所以Repo必不可少。

安装Repo很简单:

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 里,不然每次开新终端都要重新设置。

避坑指南:我曾经遇到过Repo下载失败的情况,原因是Google的服务器被墙了。如果你也遇到这个问题,可以用国内的镜像源:

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

下载Yocto源码

终于到了下载源码这一步。Yocto的源码通过Repo来管理,我们只需要指定一个manifest文件,它就会自动拉取所有相关的仓库。

以Yocto 4.0(Kirkstone)为例,我通常这样做:

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

这里解释一下:

  • poky:Yocto的参考发行版,包含了bitbake、metadata和文档
  • -b kirkstone:指定分支,Kirkstone是LTS版本,我推荐新手用这个
  • repo sync:实际下载所有仓库,这个过程取决于你的网速

下载完成后,你会看到这样的目录结构:

yocto-kirkstone/
├── bitbake/
├── documentation/
├── meta/
├── meta-poky/
├── meta-skeleton/
├── meta-yocto-bsp/
├── oe-init-build-env
├── README.hardware
├── README.poky
└── README.qemu

其中 oe-init-build-env 是环境初始化脚本,后面我们会经常用到它。

加速下载的小技巧:如果你网络不太好,可以先用 repo sync -j4 限制并发数,避免网络拥堵。我一般用 -j8,但前提是你的网络带宽够大。

验证环境是否就绪

下载完成后,我习惯先跑一个简单的检查,确保所有东西都正常:

cd yocto-kirkstone
source oe-init-build-env
bitbake -s | head -20

如果能看到一列软件包列表,说明环境搭建成功了。如果报错,别慌,根据错误提示安装缺失的依赖包就行。

总结一下:开发环境搭建其实就四步——准备宿主机、装依赖包、配Git和Repo、下载源码。每一步都不难,但每一步都容易出小问题。我建议你按照这个顺序一步步来,遇到问题先看错误日志,大部分问题都能自己解决。

Yocto开发环境搭建流程 步骤1:宿主机准备 Ubuntu 20.04/22.04 步骤2:安装依赖包 gawk, chrpath, socat等 步骤3:配置Git与Repo user.name, repo工具 步骤4:下载Yocto源码 repo init -u https://git.yoctoproject.org/poky -b kirkstone ✅ 验证:bitbake -s | head -20 常见问题与解决方案 • 网络问题:使用国内镜像源 REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo' • 依赖缺失:运行 bitbake -p 查看具体错误提示

这张图把整个流程串起来了。你跟着走一遍,基本上不会出大问题。如果卡在哪一步,回头看看对应的章节,或者直接看错误日志——日志里往往藏着答案。

可可精品资料库