3. 开发环境搭建:Ubuntu主机环境准备、安装必要软件包、配置Git和Repo、设置代理(如需要)

好,咱们正式开始动手。这一章说白了就是给你的开发主机“装工具”。Yocto 编译 Rockchip 固件,对主机环境有硬性要求。我见过不少新手在这步翻车——要么 Ubuntu 版本不对,要么缺包,编译到一半报错,心态直接崩了。

我个人习惯用 Ubuntu 22.04 LTS(64位)。20.04 也行,但 22.04 的软件源更新,踩坑少。别用 Ubuntu 24.04 尝鲜,有些包还没完全适配。

3.1 主机硬件与系统要求

先看看你的电脑够不够格。Yocto 编译 Rockchip 的 BSP,说白了就是“吃 CPU、吃内存、吃硬盘”。

项目 最低要求 推荐配置 我的备注
CPU 4 核 x86_64 8 核或以上 多核编译能省一半时间
内存 8 GB 16 GB 或 32 GB 低于 8G 会频繁 OOM
硬盘 100 GB 空闲 256 GB SSD NVMe 最好,sstate 缓存很占空间
操作系统 Ubuntu 20.04 Ubuntu 22.04 LTS 其他发行版不保证兼容
⚠ 注意: 别用虚拟机挂机械硬盘。我曾经在 HDD 上跑过一次,第一次全量编译花了 6 个多小时。换成 SSD 后,同样的代码只要 1 小时 40 分钟。差距就这么大。

3.2 安装必要软件包

Ubuntu 装完第一件事,更新源,然后装 Yocto 必须的依赖包。Rockchip 的 BSP 比纯 Yocto 多几个包,我直接给你整理好了。

# 更新软件源
sudo apt update
sudo apt upgrade -y

# 安装 Yocto 通用依赖
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 xterm \
    python3-subunit mesa-common-dev zstd liblz4-tool

# 安装 Rockchip 额外需要的包
sudo apt install -y file locales libacl1-dev libssl-dev \
    bc u-boot-tools flex bison device-tree-compiler \
    libncurses5-dev libncursesw5-dev

嗯,这里要注意。有些教程会让你装 python2,千万别装。Rockchip 的新 BSP 已经全面转向 Python3 了。我去年帮一个同事排查编译错误,发现他还在用 Python2 的 repo 工具,折腾了两小时。

💡 小技巧: 装完包后,运行 python3 --version 确认版本 ≥ 3.8。如果系统默认 python 指向 Python2,建议用 sudo update-alternatives 设置默认 Python3。

3.3 配置 Git 和 Repo

Rockchip 的源码用 Repo 工具管理。Repo 是 Google 写的,用来管理多 Git 仓库。说白了,它就是个“Git 的 Git”。

3.3.1 安装 Repo

# 创建 bin 目录并加入 PATH
mkdir -p ~/bin
export PATH=~/bin:$PATH

# 下载 Repo 脚本
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

# 验证安装
repo --version

如果你在墙内,Google 的域名可能连不上。别急,后面我会讲代理设置。或者你可以用清华的镜像源:

# 使用清华镜像
curl -sSL 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo' > ~/bin/repo
chmod a+x ~/bin/repo

3.3.2 配置 Git 用户信息

Repo 在同步代码时会用到 Git 的 user.name 和 user.email。不配的话,后面 repo init 会报错。

git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"

# 推荐配置:解决中文乱码
git config --global core.quotepath false
git config --global gui.encoding utf-8
📌 关键点: user.email 最好和你注册 GitHub/GitLab 的邮箱一致。Rockchip 的 BSP 有些仓库会校验 committer 信息,不一致可能导致 push 失败。

3.4 设置代理(如需要)

国内网络环境你懂的。Rockchip 的源码托管在 GitHub 和 Rockchip 自己的 Gerrit 上。下载量动辄几个 G,没代理的话,速度可能只有几十 KB/s,还容易断。

3.4.1 Git 代理配置

我个人习惯只给 Git 走代理,不影响系统其他流量。

# 设置 HTTP/HTTPS 代理
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

# 如果只需要对特定域名走代理
git config --global http.https://github.com.proxy http://127.0.0.1:7890

端口号看你代理工具的实际监听端口。我用 Clash,默认是 7890。用 V2Ray 的话,通常是 10809。

3.4.2 Repo 代理配置

Repo 本身不读 Git 的代理配置。你需要设置环境变量:

# 在 ~/.bashrc 或 ~/.zshrc 中添加
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890

# 然后 source 生效
source ~/.bashrc
⚠ 注意: 如果你在公司内网,有些代理会拦截 HTTPS 证书。遇到 SSL certificate problem 错误时,可以临时设置 export GIT_SSL_NO_VERIFY=1。但别长期开着,不安全。

3.4.3 取消代理

编译时不需要代理,反而可能拖慢速度。我习惯在编译脚本里自动取消代理:

# 取消 Git 代理
git config --global --unset http.proxy
git config --global --unset https.proxy

# 取消环境变量代理
unset http_proxy
unset https_proxy

3.5 验证环境

装完别急着走。跑几个命令确认环境没问题:

# 检查必要命令是否存在
which gcc g++ make git repo python3

# 检查 Python 版本
python3 --version

# 测试 Repo 能否正常拉取清单
repo init -u https://github.com/rockchip-linux/manifests -m rk3588.xml --no-repo-verify

如果 repo init 能正常执行,不报错,说明环境基本就绪。按 Ctrl+C 取消就行,我们还没到真正拉代码的时候。

💡 避坑指南: 我曾经在 Ubuntu 18.04 上装过,结果 python3 版本是 3.6,Yocto 的 bitbake 直接报语法错误。所以再次强调,Ubuntu 22.04 是最省心的选择。

3.6 本章知识体系

下面这张图帮你理清开发环境搭建的整体脉络:

开发环境搭建知识体系 开发环境搭建核心流程 1. 主机硬件与系统准备 2. 安装必要软件包 3. 配置 Git 和 Repo 4. 设置代理(按需) 5. 环境验证 Git 代理 git config --global http.proxy Repo 代理 export http_proxy=...

这张图把环境搭建拆成了 5 步。每一步都踩实了,后面编译 Rockchip 固件时才能一气呵成。别图快,磨刀不误砍柴工。