2. 开发环境搭建:Ubuntu 22.04虚拟机配置、必要工具链安装、Repo工具配置
做嵌入式Linux开发,环境搭建是第一道坎。很多新手一上来就卡在这里——不是虚拟机装不上,就是工具链版本对不上。我刚开始搞Rockchip平台时也踩过不少坑,今天就把这些经验一次性说清楚。
2.1 为什么选择Ubuntu 22.04?
说白了,选哪个Ubuntu版本直接决定了你后面会不会被依赖问题折磨。我个人习惯用LTS版本,稳定、社区支持好、软件包新。
| Ubuntu版本 | 内核版本 | GCC默认版本 | 推荐指数 |
|---|---|---|---|
| 20.04 LTS | 5.4 | 9.3 | ⭐⭐⭐ |
| 22.04 LTS | 5.15 | 11.2 | ⭐⭐⭐⭐⭐ |
| 24.04 LTS | 6.8 | 13.2 | ⭐⭐⭐⭐ |
为什么我推荐22.04?因为Rockchip官方SDK(比如RK3588的Linux SDK)在22.04上测试最充分。24.04虽然新,但有些老工具链的兼容性问题还没完全解决。嗯,这里要注意:千万别用非LTS版本,半年一升级能把人搞疯。
2.2 虚拟机配置要点
我建议用VMware Workstation Pro 17或VirtualBox 7.x。配置给够,但别贪多。
推荐虚拟机配置(RK3588级别项目):
- CPU:4-8核(物理机的一半以内)
- 内存:16GB起步,建议32GB
- 硬盘:200GB以上(SDK编译一次就要吃掉80-120GB)
- 网络:NAT模式 + 主机端口转发
我曾经犯过一个低级错误——给虚拟机分配了全部物理核心,结果宿主机卡死,编译到一半直接崩了。记住:虚拟机不是越猛越好,要给宿主机留余地。
2.3 必要工具链安装
装完系统第一件事,更新源并安装基础依赖。别跳过这步,我见过有人直接编译报错,查了半天发现是缺少libssl-dev。
# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装基础开发工具
sudo apt install -y \
git \
vim \
build-essential \
cmake \
python3 \
python3-pip \
python3-venv \
libssl-dev \
libncurses5-dev \
u-boot-tools \
device-tree-compiler \
bison \
flex \
swig \
libpython3-dev \
bc \
rsync \
cpio \
unzip \
wget \
curl \
file \
lzop \
zstd \
pkg-config \
libtool \
autoconf \
automake \
texinfo \
help2man \
gawk \
chrpath \
diffstat \
ninja-build \
meson
小技巧:如果你网络不好,可以配置国内镜像源。我个人习惯用清华源,速度稳定。配置方法:修改/etc/apt/sources.list,把archive.ubuntu.com换成mirrors.tuna.tsinghua.edu.cn。
2.4 交叉编译工具链
Rockchip平台用ARM64架构,所以需要aarch64交叉编译工具链。有两种方式获取:
- 从Linaro官方下载(推荐,版本可控)
- 使用apt直接安装(方便但版本固定)
# 方式一:apt安装(适合快速验证)
sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
# 方式二:Linaro工具链(推荐生产环境)
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz -C /opt/
echo 'export PATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin' >> ~/.bashrc
source ~/.bashrc
# 验证安装
aarch64-linux-gnu-gcc --version
避坑指南:我曾经用apt装的gcc-aarch64-linux-gnu版本是9.x,结果编译RK3399的kernel时链接报错。后来换成Linaro 7.5.0才搞定。建议:先查SDK文档要求的工具链版本,再动手装。
2.5 Repo工具配置
Repo是Google开发的Git仓库管理工具,Rockchip SDK动辄上百个Git仓库,没有Repo根本管不过来。
2.5.1 安装Repo
# 创建bin目录
mkdir -p ~/bin
# 下载Repo脚本
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
# 国内用户可以用清华源
# curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
# 添加执行权限
chmod a+x ~/bin/repo
# 配置环境变量
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc
# 验证
repo --version
2.5.2 配置Git用户信息
Repo依赖Git,所以先配好Git身份:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global color.ui auto
2.5.3 初始化SDK仓库
以RK3588 SDK为例:
# 创建工作目录
mkdir rk3588_sdk && cd rk3588_sdk
# 初始化manifest仓库
repo init -u https://github.com/rockchip-linux/manifests -b master -m rk3588_linux.xml
# 同步所有子仓库(这一步很慢,建议用-j参数)
repo sync -j8 --no-tags
经验之谈:repo sync如果中途断了,重新执行就行,它会断点续传。我第一次同步RK3588 SDK时,200多个仓库同步了将近2小时。建议用repo sync -c -j8只同步当前分支,能省不少时间。
2.6 环境验证
装完所有东西后,跑一个快速验证脚本:
#!/bin/bash
echo "=== 环境验证脚本 ==="
# 检查工具链
echo -n "交叉编译工具链: "
aarch64-linux-gnu-gcc --version &>/dev/null && echo "OK" || echo "FAIL"
# 检查Repo
echo -n "Repo工具: "
repo --version &>/dev/null && echo "OK" || echo "FAIL"
# 检查必要工具
for tool in git make cmake python3; do
echo -n "$tool: "
which $tool &>/dev/null && echo "OK" || echo "FAIL"
done
echo "=== 验证完成 ==="
2.7 开发环境全景图
下面这张图把整个环境搭建的脉络理清楚了,你对照着看,哪一步漏了一目了然。
2.8 常见问题与解决
| 问题现象 | 原因 | 解决方案 |
|---|---|---|
repo: command not found |
PATH未包含~/bin | 检查~/.bashrc中是否有export PATH=$PATH:~/bin |
fatal: Unable to connect to github.com |
网络问题或DNS | 配置代理或使用国内镜像源 |
aarch64-linux-gnu-gcc: not found |
工具链未安装或PATH未配置 | 重新执行source ~/.bashrc或手动添加PATH |
编译报错undefined reference to ... |
工具链版本不匹配 | 对照SDK文档,使用指定版本的Linaro工具链 |
最后提醒一句:环境搭建别图快。我见过太多人急着编译,结果环境没配好,报错后花几小时排查,最后发现是少装了一个libncurses-dev。按步骤来,每一步验证通过再往下走,反而最快。