2. 开发环境搭建:宿主机要求与基础配置
做嵌入式Linux开发,第一件事就是把开发环境收拾利索。我见过不少新手,一上来就急着编译,结果卡在各种依赖缺失、版本不对的问题上,折腾半天还不知道哪错了。说白了,环境搭好了,后面的事才顺。
这一节,我们就来搞定宿主机。我会把Ubuntu和Debian的配置方法都讲清楚,包括装哪些包、怎么配Git、怎么设代理和镜像源。跟着走一遍,你的机器就能开工了。
2.1 宿主机硬件与系统要求
先说说硬件。Yocto编译起来挺吃资源的,尤其是第一次构建,要下载大量源码包,还要交叉编译整个系统。我个人建议的配置是这样的:
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 4核 | 8核及以上 |
| 内存 | 8GB | 16GB或更高 |
| 磁盘空间 | 100GB空闲 | 256GB SSD |
| 操作系统 | Ubuntu 20.04 / Debian 11 | Ubuntu 22.04 LTS |
操作系统方面,Yocto官方长期支持Ubuntu LTS版本和Debian稳定版。我个人更推荐Ubuntu 22.04 LTS,因为社区活跃,遇到问题容易搜到解决方案。
2.2 安装必要软件包
系统装好后,第一件事就是更新软件源,然后安装Yocto所需的依赖包。不同系统版本,包名略有差异,但核心组件是一样的。
2.2.1 Ubuntu 22.04 / 20.04
sudo apt update
sudo apt upgrade -y
sudo apt install -y \
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 pylint3 xterm python3-subunit \
mesa-common-dev zstd liblz4-tool file locales libacl1
2.2.2 Debian 11 / 12
Debian上基本一样,只是包管理器是apt,但要注意Debian默认没有启用non-free源,有些固件包可能需要额外配置。
sudo apt update
sudo apt upgrade -y
sudo apt install -y \
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 pylint3 xterm python3-subunit \
mesa-common-dev zstd liblz4-tool file locales
dpkg -l | grep <包名> 检查是否安装成功。我习惯把这条命令记在笔记里,每次换机器都跑一遍,省得漏包。
2.3 配置Git和Repo
Yocto的源码管理依赖Git和Repo工具。Repo是Google开发的,用来管理多Git仓库的项目,Yocto的各个层(layers)就是通过Repo来组织的。
2.3.1 安装Git
Git一般系统自带,但版本可能偏老。建议安装最新稳定版:
sudo apt install -y git
git --version
然后配置用户信息,这是必须的,否则提交时会报错:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
我个人还会配几个常用别名,提高效率:
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"
2.3.2 安装Repo工具
Repo是一个Python脚本,安装很简单:
mkdir -p ~/.local/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.local/bin/repo
chmod a+x ~/.local/bin/repo
然后把 ~/.local/bin 加到PATH里:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
验证一下:
repo --version
wget -O ~/.local/bin/repo https://storage.googleapis.com/git-repo-downloads/repo。
2.4 设置代理和镜像源
Yocto构建过程中,会从GitHub、kernel.org等站点下载大量源码包。在国内,网络访问经常不稳定,甚至完全连不上。所以,配置代理或镜像源是必须的。
2.4.1 配置Git代理
如果你有HTTP代理,可以这样配:
git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy http://proxy.example.com:8080
如果只是临时用,也可以只对Yocto项目目录设置:
cd ~/yocto
git config http.proxy http://proxy.example.com:8080
2.4.2 配置APT镜像源
把系统的软件源换成国内镜像,能大幅提升apt install的速度。以Ubuntu 22.04为例,修改 /etc/apt/sources.list:
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt update
中科大、清华、阿里云的镜像都很快,选一个离你近的就行。
2.4.3 配置Yocto下载镜像
Yocto的 PREMIRRORS 机制可以让你指定一个本地或内网的镜像服务器,避免每次都去外网下载。这个我们会在后面的章节详细讲,但先提一句:
# 在 local.conf 中添加
PREMIRRORS:prepend = "\
git://.*/.* http://your-mirror.com/sources/ \n \
ftp://.*/.* http://your-mirror.com/sources/ \n \
http://.*/.* http://your-mirror.com/sources/ \n \
https://.*/.* http://your-mirror.com/sources/ \n"
2.5 验证环境
所有配置完成后,我们来验证一下环境是否就绪。跑几个简单的检查命令:
- 检查系统版本:
lsb_release -a - 检查Git:
git --version和git config --list - 检查Repo:
repo --version - 检查Python:
python3 --version和pip3 --version - 检查依赖包:用
dpkg -l确认关键包已安装
我一般还会跑一个简单的Yocto环境检查脚本,确保所有工具链都可用。你可以创建一个 check_env.sh:
#!/bin/bash
echo "=== 环境检查 ==="
echo "OS: $(lsb_release -ds)"
echo "Kernel: $(uname -r)"
echo "Git: $(git --version 2>&1)"
echo "Repo: $(repo --version 2>&1 | head -1)"
echo "Python: $(python3 --version 2>&1)"
echo "GCC: $(gcc --version 2>&1 | head -1)"
echo "Make: $(make --version 2>&1 | head -1)"
echo "=================="
跑一下:
chmod +x check_env.sh
./check_env.sh
如果所有命令都正常输出,没有报错,那环境就搭好了。
2.6 本章知识结构图
下面这张图总结了开发环境搭建的完整流程和关键节点:
环境搭建这一步,看起来琐碎,但真的很重要。我见过太多人因为少装了一个包,或者Git没配好,编译到一半报错,然后花大量时间排查。你想想看,如果一开始就把这些基础打牢,后面是不是省心多了?