2. 开发环境搭建:Ubuntu系统安装、交叉编译工具链配置、必要软件包安装
做嵌入式Linux开发,第一步就是把开发环境搭好。我见过不少新手,一上来就急着写代码,结果编译报错折腾半天,最后发现是工具链没配对。说白了,环境搭好了,后面能省80%的坑。
这一章,我带你从零开始,把Ubuntu系统装好、交叉编译工具链配好、常用软件包装齐。嗯,都是些基本功,但每一步都别跳。
2.1 Ubuntu系统安装与基础配置
瑞芯微官方推荐用 Ubuntu 18.04 LTS 或 20.04 LTS。我个人习惯用20.04,因为软件源更新,兼容性也更好。你问为什么不用22.04?我在项目中遇到过,某些老版本SDK的Python脚本在22.04上会报语法警告,虽然能改,但没必要给自己添堵。
2.1.1 系统安装方式
三种主流方式,看你手头有什么硬件:
| 方式 | 适用场景 | 推荐配置 |
|---|---|---|
| 物理机安装 | 主力开发机,性能无损耗 | CPU ≥ 4核,内存 ≥ 16GB,硬盘 ≥ 256GB |
| 虚拟机安装 | Windows/Mac用户,想保留原系统 | 分配CPU ≥ 4核,内存 ≥ 8GB,硬盘 ≥ 100GB |
| WSL2安装 | Windows用户,轻量开发 | Windows 10 2004+,内存 ≥ 8GB |
2.1.2 安装后的基础配置
装完系统后,先做三件事:
- 换源 —— 把apt源换成国内镜像,不然下载慢到怀疑人生。
- 更新系统 ——
sudo apt update && sudo apt upgrade -y - 创建普通用户 —— 别用root直接干活,权限太大会误删东西。
# 换源示例(阿里云镜像)
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo apt update
apt update,否则你装的包可能还是旧版本。我曾经因为忘了这步,装了个过时的Python库,排查了整整一下午。
2.2 交叉编译工具链配置
交叉编译,说白了就是在PC上编译出能在ARM芯片上跑的程序。瑞芯微的芯片是ARM架构,而你的PC是x86架构,所以需要一套专门的工具链。
2.2.1 工具链选择
瑞芯微官方提供了两种工具链:
| 工具链 | 适用芯片 | 下载方式 |
|---|---|---|
| gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf | RK3288, RK3399 (32位用户空间) | ARM官网或SDK内置 |
| gcc-arm-10.3-2021.07-x86_64-aarch64-linux-gnu | RK3568, RK3588 (64位用户空间) | ARM官网或SDK内置 |
我个人建议直接用SDK里自带的工具链。瑞芯微的SDK在 prebuilts/gcc/linux-x86/aarch64/ 目录下已经放好了,省得自己去ARM官网翻。
2.2.2 安装与配置
假设你下载了 gcc-arm-10.3-2021.07-x86_64-aarch64-linux-gnu.tar.xz:
# 解压到 /opt 目录
sudo tar -xvf gcc-arm-10.3-2021.07-x86_64-aarch64-linux-gnu.tar.xz -C /opt/
# 添加环境变量
echo 'export PATH=$PATH:/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-linux-gnu/bin' >> ~/.bashrc
source ~/.bashrc
# 验证安装
aarch64-linux-gnu-gcc --version
如果看到版本号输出,说明配好了。如果提示 command not found,检查一下路径写没写对。
/home/user/my tools/),结果编译时路径解析出错,报了一堆莫名其妙的找不到头文件。记住,路径里不要有空格和中文。
2.3 必要软件包安装
瑞芯微的SDK编译依赖很多软件包。我整理了一份清单,你照着装就行。
2.3.1 基础编译工具
sudo apt install -y \
build-essential \
cmake \
autoconf \
automake \
libtool \
pkg-config \
bison \
flex \
texinfo \
gettext
2.3.2 版本管理工具
Git和Repo是必须的。Git管理代码,Repo管理多个Git仓库(瑞芯微SDK有上百个仓库)。
# 安装Git
sudo apt install -y git
# 配置Git用户信息
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 安装Repo
sudo apt install -y repo
# 或者手动安装
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=$PATH:~/bin
git config --global http.proxy http://proxy.example.com:8080。我在客户现场经常这么干。
2.3.3 Python与脚本工具
SDK里很多脚本是用Python写的,包括打包、签名、烧录工具。
sudo apt install -y \
python3 \
python3-pip \
python3-dev \
python3-venv \
python3-setuptools
# 安装常用Python包
pip3 install \
pyelftools \
pycryptodome \
rsa \
requests
2.3.4 其他必要工具
sudo apt install -y \
make \
gcc \
g++ \
gawk \
wget \
curl \
unzip \
xz-utils \
file \
tree \
vim \
ssh \
net-tools \
device-tree-compiler \
u-boot-tools \
mtools \
dosfstools \
parted \
gdisk
2.4 开发环境结构总览
下面这张图,帮你把整个开发环境的结构理清楚。你想想看,从PC到ARM板,中间经过了哪些环节?
2.5 环境验证
装完所有东西后,跑一个简单的测试,确保环境没问题。
# 1. 验证交叉编译器
aarch64-linux-gnu-gcc --version
# 2. 验证Git
git --version
# 3. 验证Repo
repo --version
# 4. 写一个简单的C程序,交叉编译测试
cat > hello.c << EOF
#include <stdio.h>
int main() {
printf("Hello Rockchip!\n");
return 0;
}
EOF
aarch64-linux-gnu-gcc -o hello hello.c
file hello
# 输出应该包含 "ELF 64-bit LSB executable, ARM aarch64"
file hello 显示 ARM aarch64,说明交叉编译环境配好了。如果显示 x86-64,说明你用的是本地gcc,不是交叉编译器。
2.6 常见问题与解决
我整理了几个新手最容易踩的坑:
| 问题 | 原因 | 解决方法 |
|---|---|---|
/usr/bin/env: python3: No such file or directory |
系统没有安装Python3 | sudo apt install python3 |
aarch64-linux-gnu-gcc: command not found |
工具链没加到PATH | 检查 ~/.bashrc 中的PATH配置 |
repo: command not found |
Repo没安装或没加PATH | 手动安装到 ~/bin/ 并导出PATH |
编译时提示 cannot find -lxxx |
缺少某个库文件 | sudo apt install libxxx-dev |
source ~/.bashrc 或者重新登录,确保环境变量生效。我见过有人配好了PATH,但忘了source,然后跑来问我为什么工具链用不了。
环境搭好了,后面编译SDK就顺了。嗯,这一章就到这儿,你照着步骤走一遍,应该不会出大问题。