3. 主机开发环境搭建(Ubuntu 22.04)

好,咱们正式开始动手。上一章我们把 Ubuntu 22.04 装好了,现在要让这台机器变成一台能编译内核、能烧录固件的开发工作站。

说白了,就是装一堆工具链和库。别小看这一步,我见过不少新手在这卡半天——缺个包编译到一半报错,心态直接崩了。咱们一次搞定,后面就顺了。

3.1 更新软件源与系统

拿到一台新系统,第一件事永远是更新。这不是走形式,是为了让后面装的包版本对得上。

sudo apt update
sudo apt upgrade -y

我个人习惯在 upgrade 之后看一眼有没有内核更新。如果有,建议重启一下,确保当前内核和模块一致。

小提示: 如果网络慢,可以换国内源(清华、阿里、中科大)。改 /etc/apt/sources.list 就行,记得先备份。

3.2 安装核心编译工具链

RK3568 的驱动开发,本质上就是写内核模块。所以 gcc、make 这些是吃饭的家伙。

sudo apt install -y gcc g++ make

验证一下:

gcc --version
make --version

输出里能看到版本号就行。Ubuntu 22.04 默认的 gcc 是 11.x,够用。如果你非要折腾交叉编译,后面会单独讲。

3.3 安装内核开发必备库

这里有个坑:很多人只装了 gcc 就开始编译内核,结果报 flex: command not found 或者 Cannot use CONFIG_CC_STACKPROTECTOR_STRONG。嗯,就是缺了下面这些。

sudo apt install -y flex bison libssl-dev libelf-dev
  • flex / bison:内核的 DTS 解析、配置系统需要它们。说白了就是词法分析和语法分析的工具。
  • libssl-dev:编译内核时如果开了模块签名,就需要 OpenSSL 的头文件和库。
  • libelf-dev:处理 ELF 格式的内核模块,缺了它 modpost 会罢工。
注意: 我曾经在 Ubuntu 20.04 上因为 libssl-dev 版本太低,编译 5.10 内核时卡在 certs/signing_key.pem 生成步骤。Ubuntu 22.04 的 libssl-dev 是 3.0.x,没问题。

3.4 安装版本管理工具:git 与 repo

RK3568 的 SDK 是用 repo 管理的。repo 本身是 Python 脚本,底层依赖 git。所以两个都得装。

sudo apt install -y git

git 装完建议配一下身份信息,不然 commit 时会报错:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

然后装 repo。官方推荐用 Google 的源,但国内网络你懂的……我一般用清华的镜像:

mkdir -p ~/.local/bin
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/.local/bin/repo
chmod +x ~/.local/bin/repo

记得把 ~/.local/bin 加到 PATH 里:

echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc
source ~/.bashrc

验证一下:

repo --version

能看到版本号就对了。

3.5 配置 Python 与 pip 环境

RK3568 的编译脚本、烧录工具很多都是 Python 写的。Ubuntu 22.04 自带 Python 3.10,够用。但 pip 得自己装。

sudo apt install -y python3 python3-pip python3-venv

我个人习惯用虚拟环境,避免把系统 Python 搞乱。比如建一个专门给 RK 用的虚拟环境:

python3 -m venv ~/rk3568_env
source ~/rk3568_env/bin/activate

激活后,终端前面会出现 (rk3568_env) 字样。然后升级 pip:

pip install --upgrade pip

后面装什么 pyelftools、pyserial、cryptography 都在这个环境里装,干净。

小技巧: 把 source ~/rk3568_env/bin/activate 加到 ~/.bashrc 里,每次开终端自动激活。但如果你同时做多个项目,建议手动激活,避免冲突。

3.6 其他常用工具

下面这些不是必须的,但我建议装上。你想想看,调试驱动时经常要看设备树、查寄存器、抓日志,没这些工具会很痛苦。

sudo apt install -y vim tree htop i2c-tools device-tree-compiler
  • device-tree-compiler (dtc):编译/反编译设备树,调试驱动必备。
  • i2c-tools:调试 I2C 外设时,直接命令行就能扫设备地址。
  • htop:看 CPU 占用、内存,编译时监控系统负载。

3.7 环境验证清单

装完别急着走。我习惯跑一遍快速验证,确保每个工具都能用。下面这个表格你可以对着打勾:

工具/库 验证命令 预期结果
gcc gcc --version 显示版本号(如 11.x)
make make --version 显示版本号(如 4.3)
flex flex --version 显示版本号
bison bison --version 显示版本号
git git --version 显示版本号
repo repo --version 显示版本号
python3 python3 --version 显示 3.10.x
pip pip --version 显示 pip 版本
dtc dtc --version 显示版本号

全部通过?那恭喜你,开发环境的基础已经打好了。后面编译内核、写驱动模块,都不会再被“缺包”这种问题绊倒。

核心要点:
  • 先更新系统,再装工具链,顺序别搞反。
  • libssl-dev 和 libelf-dev 是内核编译的硬依赖,漏了会报错。
  • repo 用清华镜像,速度快。
  • Python 虚拟环境隔离项目依赖,推荐养成习惯。
主机开发环境搭建流程 1. 更新系统 2. gcc / make 3. flex / bison 4. libssl-dev 5. git 6. repo 7. Python / pip 8. dtc / i2c-tools / htop 9. 环境验证清单 💡 每装完一组工具,建议立即验证。我曾经漏装 libelf-dev,编译到 90% 才报错,白白等了 20 分钟。 按表格逐项检查,确保每个工具都能正常调用。