2. 开发环境搭建:宿主机要求与Yocto源码下载
搭建一个靠谱的开发环境,是Yocto移植的第一步。这一步要是没弄好,后面编译到一半报错,那才叫头疼。我刚开始接触Yocto时,就在环境上栽过跟头——Ubuntu版本不对,折腾了两天才发现是包管理器源的问题。
今天咱们就把宿主机环境彻底搞定。跟着我的节奏来,保证一次过。
2.1 宿主机硬件与操作系统要求
先说硬件。Yocto编译是个吃资源的活,尤其是编译完整系统镜像时。我建议的配置如下:
| 硬件项 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 4核 | 8核或以上 |
| 内存 | 8GB | 16GB或以上 |
| 磁盘空间 | 100GB空闲 | 250GB SSD |
| 网络 | 宽带连接 | 稳定宽带,建议科学上网 |
操作系统方面,Yocto官方推荐Ubuntu或Debian。我个人习惯用Ubuntu 20.04 LTS或22.04 LTS,这两个版本经过大量验证,兼容性最好。Debian 11/12也可以,但包名可能略有差异。
2.2 安装必要软件包
Yocto依赖一堆基础工具。说白了,就是编译器和一些系统库。咱们一条命令搞定:
sudo apt update
sudo apt install gcc g++ make cmake git curl wget \
python3 python3-pip python3-venv \
chrpath diffstat gawk texinfo \
libssl-dev libncurses-dev libgmp-dev libmpfr-dev \
zlib1g-dev file bzip2 unzip xz-utils \
lz4 zstd pzstd
这里我解释几个关键包:
- gcc/g++:C/C++编译器,Yocto编译工具链的基础
- python3:Yocto的构建脚本大量使用Python
- chrpath:用于修改二进制文件的rpath,Yocto打包时常用
- diffstat:生成补丁文件的统计信息
- texinfo:生成文档的工具,有些包编译时需要
- lz4/zstd:现代压缩算法,Yocto用它加速解压
2.3 配置Git和Repo
Yocto源码托管在Git仓库中,而且项目结构复杂,需要Repo工具来管理多个Git仓库。咱们一步步来。
2.3.1 配置Git
先设置你的Git用户名和邮箱。这个很重要,因为Yocto的提交记录会用到:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
然后配置一些实用参数:
git config --global core.editor vim
git config --global color.ui auto
git config --global pull.rebase false
我个人习惯把pull.rebase设为false,这样拉取代码时默认用merge方式,避免rebase带来的历史重写问题。当然,这个看个人喜好。
2.3.2 安装Repo工具
Repo是Google开发的仓库管理工具,专门用于管理多Git仓库项目。Yocto用它来组织meta层和源码。
安装Repo很简单:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
然后把~/bin加入PATH:
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc
验证安装:
repo --version
如果看到版本号,说明安装成功。
2.4 下载Yocto源码
环境搭好了,咱们开始下载Yocto源码。这里以Yocto 4.0(Kirkstone)为例,这是目前最稳定的LTS版本。
2.4.1 创建工作目录
mkdir -p ~/yocto
cd ~/yocto
2.4.2 初始化Repo
repo init -u https://git.yoctoproject.org/poky -b kirkstone
这条命令会从Yocto官方仓库拉取manifest文件,指定分支为kirkstone。manifest文件描述了所有需要下载的Git仓库及其版本。
2.4.3 同步源码
repo sync
这一步会下载所有源码,包括:
- poky:Yocto核心层,包含BitBake构建系统和基础meta层
- meta-openembedded:OpenEmbedded社区维护的扩展层
- meta-yocto-bsp:Yocto官方板级支持包
下载时间取决于网络速度。我一般会泡杯咖啡等着——第一次同步大概需要10-30分钟。
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/poky -b kirkstone我在国内项目上一直用这个镜像,速度稳定多了。
2.4.4 验证下载结果
同步完成后,检查目录结构:
ls -la ~/yocto/poky/
你应该看到类似这样的结构:
bitbake/ # BitBake构建引擎
meta/ # 核心meta层
meta-poky/ # Poky参考发行版配置
meta-yocto-bsp/ # 官方BSP支持
documentation/ # 文档
oe-init-build-env # 环境初始化脚本
2.5 知识结构总览
为了让你对整个环境搭建流程有个直观认识,我画了张图:
2.6 常见问题与避坑指南
环境搭建过程中,有几个坑我踩过,分享给你:
原因:网络不通或Git代理配置问题。
解决:检查网络,或者配置Git代理:
git config --global http.proxy http://代理地址:端口
原因:网络不稳定或服务器响应慢。
解决:按Ctrl+C中断,然后重新执行
repo sync。Repo支持断点续传,不会重复下载已完成的仓库。
原因:前面安装的包不全。
解决:根据错误提示安装对应包。Yocto的报错信息一般很明确,比如"Please install xxx"。