保姆级教程:在Ubuntu 20.04上搞定RK3568 SDK编译环境(含清华源加速)
保姆级教程在Ubuntu 20.04上搞定RK3568 SDK编译环境含清华源加速刚拿到RK3568开发板时最让人头疼的就是搭建编译环境。作为一款性能均衡的ARM处理器RK3568在物联网和边缘计算领域应用广泛但官方文档往往假设用户已经熟悉Linux开发环境。本文将手把手带你完成从零配置特别针对国内网络环境优化解决repo初始化卡顿、依赖下载慢等典型问题。1. 系统准备与基础配置1.1 选择合适的Ubuntu版本RK3568官方推荐Ubuntu 18.04或20.04 LTS版本。实测20.04对新手更友好# 查看系统版本 lsb_release -a建议使用物理机安装而非虚拟机因为编译过程需要大量CPU和内存资源避免虚拟机USB透传可能导致的烧录问题直接访问硬件性能更稳定1.2 配置基础开发工具先更新软件源并安装必要工具链sudo apt update sudo apt upgrade -y sudo apt install -y git curl python3 python3-pip重要提示如果之前安装过旧版工具链建议先清理sudo apt autoremove --purge2. 高效获取SDK源码2.1 配置清华镜像加速国内直接连接官方git服务器速度极慢需要修改repo工具源mkdir -p ~/bin curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo chmod ax ~/bin/repo编辑~/.bashrc添加以下内容export PATH~/bin:$PATH export REPO_URLhttps://mirrors.tuna.tsinghua.edu.cn/git/git-repo使配置立即生效source ~/.bashrc2.2 初始化代码仓库对于RK3568 Linux 4.19内核版本repo init --repo-url https://mirrors.tuna.tsinghua.edu.cn/git/rockchip/tools/repo \ -u https://mirrors.tuna.tsinghua.edu.cn/git/rockchip/platform/manifests \ -b linux -m rk356x_linux_release.xml5.10内核版本替换为rk356x_linux5.10_release.xml。同步代码时建议使用-j4参数repo sync -j4 --no-clone-bundle3. 开发环境深度配置3.1 安装编译依赖完整依赖列表如下已适配清华源类别关键包作用基础build-essentialGCC工具链内核libssl-dev内核模块签名文件系统bison flex构建工具调试chrpath二进制路径处理一键安装命令sudo apt install -y build-essential libssl-dev liblz4-tool \ expect g patchelf chrpath gawk texinfo diffstat \ binfmt-support qemu-user-static live-build bison flex \ fakeroot cmake unzip device-tree-compiler ncurses-dev3.2 配置APT镜像源备份原有源并替换为中科大源sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i s|http://.*.ubuntu.com|https://mirrors.ustc.edu.cn|g /etc/apt/sources.list sudo apt update常见问题处理若出现GPG错误执行sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [缺失的KEY]特定包找不到时尝试添加universe仓库sudo add-apt-repository universe4. 编译实战技巧4.1 环境初始化进入SDK目录执行source envsetup.sh ./build.sh lunch选择对应的板级配置例如1. rk3568-evb1-ddr4-v10-linux 2. rk3568-robot-linux4.2 分步编译策略推荐首次编译时分步执行./build.sh -kernel # 先编译内核 ./build.sh -uboot # 再编译引导程序 ./build.sh -rootfs # 最后编译文件系统完整编译直接执行./build.sh all编译输出位于rockdev/目录主要包含boot.img内核和initramfsrootfs.img文件系统镜像uboot.img引导加载程序4.3 常见错误排查网络超时问题# 设置git全局代理如需 git config --global http.proxy http://127.0.0.1:1080权限不足错误# 解决sudo编译问题 sudo chown -R $USER:$USER .内存不足添加swap空间sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile5. 高级开发技巧5.1 使用ccache加速编译编辑build.sh找到MAKE命令修改为export CCACHE_DIR$SDK_DIR/.ccache make CCccache gcc -j$(nproc)首次编译后二次编译速度可提升70%以上。5.2 定制文件系统如需添加自定义软件包修改device/rockchip/rk356x/package-list.txt例如增加vim htop tmux5.3 交叉编译工具链配置SDK自带工具链路径prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin使用时需设置环境变量export PATH$PATH:$(pwd)/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin export CROSS_COMPILEaarch64-linux-gnu-实际项目中遇到最耗时的往往是依赖下载环节。有次在客户现场演示发现将repo sync放在后台运行同时先手动下载大的git仓库如kernel和uboot可以节省40%以上的初始化时间。具体做法是初始化后暂停同步手动git clone大仓库到对应路径再继续repo sync。