搭建Yocto开发环境:宿主机要求、安装必要软件包、配置Git与Repo、下载Poky源码
好,咱们正式开始动手了。搭建开发环境这件事,说难不难,说简单吧,我见过太多人在这里栽跟头。说白了,环境没搭好,后面全是坑。今天我就把我在多个项目中踩过的坑、积累的经验,一次性给你讲清楚。
宿主机要求:别让你的机器拖后腿
Yocto是个吃资源的家伙。我第一次用Yocto时,拿了个4GB内存的笔记本硬跑,结果编译到一半直接卡死。嗯,那滋味真不好受。
先看看官方推荐的最低配置:
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 双核 x86_64 | 4核以上 |
| 内存 | 4GB | 8GB+ |
| 磁盘空间 | 50GB | 100GB+ SSD |
| 操作系统 | Ubuntu 20.04+ / CentOS 7+ | Ubuntu 22.04 LTS |
我个人习惯用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等。这个过程取决于你的网速,快则几分钟,慢则半小时。我建议泡杯咖啡等着。
验证环境:确认一切就绪
下载完成后,检查一下目录结构:
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了。记住,环境搭得越稳,后面越省心。我曾经因为偷懒少装了一个包,结果排查了整整一个下午。你想想看,值不值?