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会罢工。
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 虚拟环境隔离项目依赖,推荐养成习惯。