SDK下载与编译环境搭建
1. 概述
1.1 功能简介
本文档介绍如何获取 RK3588 Linux 6.1 SDK 源码,搭建 Ubuntu 编译环境,安装交叉编译器,以及 SDK 的目录结构说明。SDK 是 RK3588 开发的核心资源,包含 U-Boot、Kernel、Buildroot/Debian 根文件系统、NPU 等全套源码。
1.2 SDK 版本说明
| 项目 | 版本 |
|---|---|
| SDK 版本 | rk3588_linux_release_v1.0.0 |
| Linux 内核 | 6.1 |
| NPU 驱动 | rknpu v2.0.0 |
| RKNN Toolkit2 | v2.0.0 |
具体 SDK 版本号以实际获取的 release 版本为准。RK3588 Linux 6.1 SDK 基于较新内核版本,与 RK3568 的 4.19 内核有显著差异。
1.3 SDK 架构
SDK 根目录
├── u-boot/ # U-Boot 引导程序源码
├── kernel/ # Linux 内核源码 (6.1)
├── buildroot/ # Buildroot 根文件系统构建
├── debian/ # Debian 根文件系统构建
├── external/ # 外部组件(rknpu、mpp、rga 等)
├── rkbin/ # Rockchip 二进制固件(DDR、BL31、BL32 等)
├── device/ # 设备树配置和分区文件
├── tools/ # 烧录工具和打包脚本
├── docs/ # 官方文档
└── prebuilts/ # 预编译工具链2. 硬件准备
2.1 硬件需求
| 组件 | 推荐配置 | 备注 |
|---|---|---|
| 开发电脑 | x86_64 架构 | 必须 64 位系统 |
| 内存 | 16 GB 以上 | 编译过程消耗大量内存 |
| 硬盘 | 200 GB 以上空闲空间 | SDK 约 20 GB,编译产物约 100 GB |
| 网络 | 稳定宽带 | 首次下载 SDK 约 50 GB 数据 |
2.2 推荐配置
- 操作系统:Ubuntu 20.04 LTS 或 22.04 LTS
- CPU:4 核以上(推荐 8 核)
- 内存:32 GB(推荐)
- 硬盘:500 GB SSD(推荐)
3. 软件准备
3.1 Ubuntu 环境要求
安装依赖包:
# 更新软件源
sudo apt update
sudo apt upgrade -y
# 安装基础编译依赖
sudo apt install -y \
repo \
git \
curl \
wget \
make \
gcc \
g++ \
cmake \
python3 \
python3-pip \
device-tree-compiler \
libncurses5-dev \
libssl-dev \
bc \
bison \
flex \
unzip \
zip \
dos2unix \
rsync \
file \
lzop \
liblz4-tool \
zstd \
pkg-config \
gdisk \
mtd-utils
# 安装 32 位兼容库(用于部分工具链)
sudo apt install -y \
lib32z1 \
lib32ncurses5 \
lib32stdc++63.2 安装 Repo 工具
SDK 使用 Google Repo 工具管理多个 Git 仓库:
# 安装 repo(方法一:使用 apt)
sudo apt install repo
# 安装 repo(方法二:手动安装)
mkdir -p ~/.local/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.local/bin/repo
chmod a+x ~/.local/bin/repo
# 将 ~/.local/bin 添加到 PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc3.3 配置 Git
# 配置 Git 用户名和邮箱(repo 同步时需要)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"4. SDK 下载
4.1 获取 SDK 源码
SDK 通过 repo 工具从多个 Git 仓库同步:
# 创建 SDK 目录
mkdir -p ~/rk3588_sdk
cd ~/rk3588_sdk
# 初始化 repo(使用 SDK 的 manifest 文件)
repo init \
-u https://github.com/rockchip-linux/manifests \
-b rk3588_linux_release_v1.0.0.xml \
-m rk3588_linux_release_v1.0.0.xml
# 同步源码(耗时较长,取决于网络速度)
repo sync -c -j4注意:
repo sync会下载约 50 GB 数据,耗时数小时。建议在网络条件良好的环境下进行,或在公司内网使用镜像源加速。 具体 manifest 文件名以 RK 官方发布的实际版本为准。
4.2 国内镜像加速
如果使用国内网络,可以配置镜像源加速:
# 使用清华镜像源初始化(具体 URL 以官方发布为准)
repo init \
-u https://mirrors.tuna.tsinghua.edu.cn/git/rockchip-sdk/manifests \
-b rk3588_linux_release_v1.0.0.xml \
-m rk3588_linux_release_v1.0.0.xml
# 同步源码
repo sync -c -j44.3 同步后的目录验证
# 查看 SDK 目录大小
du -sh ~/rk3588_sdk预期输出(具体大小取决于版本):
20G /home/user/rk3588_sdk# 查看 manifest 版本
cat ~/rk3588_sdk/.repo/manifest.xml5. SDK 目录结构说明
5.1 顶层目录
| 目录 | 说明 | 大小估算 |
|---|---|---|
u-boot/ | U-Boot 引导程序源码 | 约 500 MB |
kernel/ | Linux 内核 6.1 | 约 2 GB |
buildroot/ | Buildroot 构建系统 | 约 1 GB |
debian/ | Debian 根文件系统构建脚本 | 约 500 MB |
external/ | 外部组件库 | 约 2 GB |
rkbin/ | Rockchip 预编译二进制 | 约 500 MB |
device/ | 设备树、分区配置文件 | 约 100 MB |
tools/ | 烧录和打包工具 | 约 200 MB |
docs/ | 官方 PDF 文档 | 约 500 MB |
prebuilts/ | 预编译工具链 | 约 1 GB |
5.2 external 目录(关键组件)
| 子目录 | 说明 |
|---|---|
rknpu2/ | NPU 驱动 v2(RK3588 使用) |
rknn-toolkit2/ | RKNN 模型转换和推理工具 |
mpp/ | 媒体处理平台(编解码) |
linux-rga/ | RGA 图像处理库 |
camera_engine_rkaiq/ | ISP 图像处理引擎 |
gstreamer-rockchip/ | Gstreamer 插件 |
libmali/ | Mali GPU 用户空间驱动 |
rkwifibt/ | WiFi/BT 固件 |
5.3 device 目录(板级配置)
| 子目录 | 说明 |
|---|---|
device/rockchip/rk3588/ | RK3588 板级配置 |
device/rockchip/.target_images/ | 编译输出镜像目录 |
6. 交叉编译器安装
6.1 方法一:使用 SDK 预编译工具链
SDK 中自带预编译的交叉编译器:
# 查看预编译工具链
cd ~/rk3588_sdk/prebuilts/gcc/linux-x86/aarch64/
ls -la6.2 方法二:手动安装交叉编译器
从 ARM 官方或 Linaro 下载:
# 下载 gcc-arm 交叉编译器(具体版本以 SDK 要求为准)
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz
# 解压到指定目录
sudo tar -xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz \
-C /opt/
# 添加到 PATH
echo 'export PATH=/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin:$PATH' >> ~/.bashrc
source ~/.bashrc6.3 验证交叉编译器
# 验证编译器版本
aarch64-none-linux-gnu-gcc --version预期输出:
aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 10.3-2021.07) 10.3.1 20210621
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.# 测试编译一个简单的 C 程序
echo 'int main(){return 0;}' | aarch64-none-linux-gnu-gcc -x c -o /tmp/test_arm64 -
file /tmp/test_arm64预期输出:
/tmp/test_arm64: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, ...7. 首次编译验证
7.1 编译 U-Boot
cd ~/rk3588_sdk/u-boot
# 配置 RK3588 开发板(defconfig 名称以实际 SDK 为准)
make ARCH=arm64 rk3588_defconfig
# 编译
make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- -j$(nproc)编译完成后,在 u-boot/ 目录下生成 uboot.img、trust.img 等文件。
7.2 编译内核
cd ~/rk3588_sdk/kernel
# 配置内核(defconfig 名称以实际 SDK 为准)
make ARCH=arm64 rockchip_linux_defconfig
# 编译内核和设备树
make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- -j$(nproc)编译完成后,在 kernel/arch/arm64/boot/ 目录下生成 Image 文件,在 kernel/arch/arm64/boot/dts/rockchip/ 目录下生成 .dtb 设备树文件。
7.3 编译 Buildroot 根文件系统
cd ~/rk3588_sdk/buildroot
# 配置 Buildroot(defconfig 名称以实际 SDK 为准)
make rockchip_rk3588_defconfig
# 编译(首次编译耗时较长,约 1-2 小时)
make -j$(nproc)编译完成后,在 buildroot/output/rockchip_rk3588/images/ 目录下生成 rootfs.ext4、rootfs.squashfs 等文件。
7.4 生成完整烧录镜像
# 使用打包脚本生成 update.img(脚本路径以实际 SDK 为准)
cd ~/rk3588_sdk
./build.sh update生成的 update.img 可用于 RKDevTool 烧录,详见 系统烧录指南。
8. 常见问题
8.1 repo sync 失败
现象: repo sync 过程中断,出现网络错误
原因: 网络不稳定或 Git 服务器连接超时
解决方案:
# 重新执行 sync(断点续传)
repo sync -c -j4
# 如果持续失败,尝试减少并行数
repo sync -c -j1
# 或使用国内镜像源8.2 编译报错:缺少依赖
现象: 编译过程中提示 xxx: command not found
原因: 缺少必要的编译工具包
解决方案:
# 检查并安装常见缺失依赖
sudo apt install -y file lzop liblz4-tool zstd gdisk mtd-utils8.3 交叉编译器不兼容
现象: 编译出的程序在开发板上运行报错 Segmentation fault
原因: 交叉编译器版本与内核不匹配
解决方案:
- 使用 SDK 预编译的工具链(
prebuilts/gcc/linux-x86/aarch64/) - 确保使用 ARM GCC 10.3 版本
相关文档
- 系统烧录指南 — 编译产物的烧录方法
- 快速上手 — 在板上验证编译结果
- Linux SDK 编译 — SDK 编译详细指南
- 核心板参数 — 核心板和底板硬件规格
