开发环境搭建:宿主机要求、安装必要软件包、配置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、下载源码。每一步都不难,但每一步都容易出小问题。我建议你按照这个顺序一步步来,遇到问题先看错误日志,大部分问题都能自己解决。
这张图把整个流程串起来了。你跟着走一遍,基本上不会出大问题。如果卡在哪一步,回头看看对应的章节,或者直接看错误日志——日志里往往藏着答案。
可可精品资料库