保姆级教程:在Ubuntu 22.04上从零编译RK3568 Linux SDK(含Python2.7避坑指南)
2026/6/1 9:46:20 网站建设 项目流程

在Ubuntu 22.04上从零构建RK3568 Linux SDK的完整实战指南

当拿到一块RK3568开发板时,第一道门槛往往不是代码编写,而是环境搭建。不同于x86平台的即插即用,嵌入式开发的环境配置就像解一道多维方程——系统版本、工具链兼容性、依赖包冲突,每个变量都可能让编译过程戛然而止。本文将带你穿越这片雷区,特别针对Ubuntu 22.04这个较新但Python 2.7已退役的系统版本,展示如何优雅地搭建完整的RK3568 Linux开发环境。

1. 开发环境准备:避开新系统的旧坑

1.1 系统基础配置

在全新的Ubuntu 22.04 LTS上,首先需要确保软件源是最新的:

sudo apt update && sudo apt upgrade -y sudo apt install -y software-properties-common

接着安装基础编译工具链,这里有个细节:Ubuntu 22.04默认的gcc版本是11.x,而RK3568 SDK可能需要较旧的工具链。建议同时安装gcc-9作为备用:

sudo apt install -y gcc-9 g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90

1.2 Python 2.7的生存之道

RK3568的某些构建脚本仍依赖Python 2.7,这在已淘汰Python 2的Ubuntu 22.04上是个挑战。以下是安全安装方案:

# 下载并编译Python 2.7.18 wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz tar -xf Python-2.7.18.tar.xz cd Python-2.7.18 ./configure --enable-optimizations --prefix=/usr/local/python2.7 make -j$(nproc) sudo make install

关键技巧在于不破坏系统默认的Python 3环境。创建符号链接时使用显式路径:

sudo ln -s /usr/local/python2.7/bin/python /usr/local/bin/python2

验证安装:

python2 --version # 应输出: Python 2.7.18

2. 获取SDK:网络优化与权限处理

2.1 Repo工具配置

RK3568 SDK使用Google的repo工具管理,国内开发者需要特别配置:

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

在~/.bashrc中添加:

export PATH=~/bin:$PATH export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

2.2 SDK下载加速

使用国内镜像源同步代码能极大提升效率:

mkdir ~/rk3568_linux_sdk cd ~/rk3568_linux_sdk repo init -u https://gitlab.com/firefly-linux/manifests.git -b master -m rk356x_linux_release.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo repo sync -j$(nproc) --no-tags --no-clone-bundle

遇到权限问题时,尝试:

git config --global credential.helper store git config --global http.postBuffer 524288000

3. 编译实战:从配置到打包

3.1 编译环境初始化

进入SDK根目录,加载环境变量:

cd ~/rk3568_linux_sdk source build/envsetup.sh

选择板级配置时,RK3568常见的选项有:

1. BoardConfig-rk3568-evb1-ddr4-v10.mk 2. BoardConfig-rk3568-xxx.mk

使用交互式菜单选择:

lunch

3.2 分步编译指南

首次编译建议分步进行,便于定位问题:

# 编译U-Boot ./build.sh uboot # 编译内核 ./build.sh kernel # 编译文件系统(以buildroot为例) export RK_ROOTFS_SYSTEM=buildroot ./build.sh buildroot

常见错误处理:

  • 证书错误:在build.sh开头添加export GIT_SSL_NO_VERIFY=1
  • 内存不足:添加-j$(($(nproc)/2))减少并行任务数
  • Python版本冲突:显式指定python2路径

3.3 完整编译与打包

验证各组件编译成功后,进行完整构建:

./build.sh all ./build.sh firmware

生成的固件位于rockdev目录,关键文件包括:

文件作用
MiniLoaderAll.bin初级引导加载程序
uboot.imgU-Boot镜像
boot.img内核与设备树
rootfs.img根文件系统
update.img完整升级包

4. 高级技巧与疑难排解

4.1 交叉编译工具链定制

SDK自带的工具链可能不是最优选择。可以手动指定工具链路径:

export RK_TOOLCHAIN=/path/to/your/toolchain

验证工具链:

${RK_TOOLCHAIN}/bin/aarch64-linux-gnu-gcc --version

4.2 网络代理配置

如果代码同步缓慢,可为repo和git配置代理:

git config --global http.proxy http://proxy.example.com:8080 export REPO_HTTP_PROXY=http://proxy.example.com:8080

4.3 常见错误解决方案

问题1fatal error: openssl/opensslv.h: No such file or directory

sudo apt install libssl-dev

问题2error while loading shared libraries: libpython2.7.so.1.0

sudo cp /usr/local/python2.7/lib/libpython2.7.so.1.0 /usr/lib/ sudo ldconfig

问题3mkimage command not found

sudo apt install u-boot-tools

5. 开发效率提升实践

5.1 增量编译技巧

修改内核后快速重编译:

./build.sh kernel && ./build.sh updateimg

仅更新文件系统:

./build.sh buildroot && ./build.sh firmware

5.2 自动化脚本示例

创建build_all.sh自动化脚本:

#!/bin/bash set -e echo "=== 清理旧编译 ===" ./build.sh cleanall echo "=== 开始全量编译 ===" ./build.sh all echo "=== 打包固件 ===" ./build.sh firmware echo "=== 生成update.img ===" ./build.sh updateimg echo "编译完成!固件位于:rockdev/"

5.3 开发板快速测试

使用adbfastboot快速刷机:

sudo apt install android-tools-adb android-tools-fastboot fastboot flash boot boot.img fastboot flash system rootfs.img fastboot reboot

对于需要保留数据的场景:

fastboot flash --skip-reboot boot boot.img fastboot flash --skip-reboot system rootfs.img fastboot reboot

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询