目录
[开篇先定死 2 条红线(违反必踩坑,别头铁)](#开篇先定死 2 条红线(违反必踩坑,别头铁))
[一、第一步:虚拟机 + Ubuntu 系统安装,新手首选 VMware](#一、第一步:虚拟机 + Ubuntu 系统安装,新手首选 VMware)
[1. 必备软件下载(全免费,不用找破解版)](#1. 必备软件下载(全免费,不用找破解版))
[2. 虚拟机新建与配置,一步不落](#2. 虚拟机新建与配置,一步不落)
[3. Ubuntu 系统安装,避坑关键步骤](#3. Ubuntu 系统安装,避坑关键步骤)
[4. 系统基础配置,解决 90% 的后续问题](#4. 系统基础配置,解决 90% 的后续问题)
[(2)安装 VMware Tools,实现文件共享 + 剪贴板互通](#(2)安装 VMware Tools,实现文件共享 + 剪贴板互通)
[二、第二步:安装编译必备依赖库,解决 99% 的编译报错](#二、第二步:安装编译必备依赖库,解决 99% 的编译报错)
[三、第三步:RK SDK 获取、解压与目录校验](#三、第三步:RK SDK 获取、解压与目录校验)
[1. SDK 获取渠道(新手别瞎找)](#1. SDK 获取渠道(新手别瞎找))
[2. SDK 解压,新手必踩的天坑预警](#2. SDK 解压,新手必踩的天坑预警)
[3. SDK 目录回顾,重点目录再强调](#3. SDK 目录回顾,重点目录再强调)
[四、第四步:SDK 首次编译,完整步骤 + 报错全解决](#四、第四步:SDK 首次编译,完整步骤 + 报错全解决)
[1. 编译前的准备:选择开发板对应的编译配置](#1. 编译前的准备:选择开发板对应的编译配置)
[2. 一键全编译,执行命令](#2. 一键全编译,执行命令)
[3. 编译时长与注意事项](#3. 编译时长与注意事项)
[4. 编译成功校验](#4. 编译成功校验)
[五、新手编译常见报错,100% 解决方案汇总](#五、新手编译常见报错,100% 解决方案汇总)
【本文首发于 CSDN,作者:黒漂技术佬,未经授权禁止转载】
大家好,我是黒漂技术佬。前两篇扫盲 + 前置知识补全之后,后台收到最多的哭诉就是:
"佬,我看懂了所有理论,结果卡在环境搭建上搞了一周,虚拟机装崩 3 次,SDK 编译报了几百个错,直接想放弃了"
我太懂这种痛苦了!当年我入门的时候,光环境搭建就踩了半个月的坑,网上的教程要么跳步跳得离谱,要么只给命令不讲为什么,报错了连排查方向都没有。
今天这篇,我就把 RK 安卓驱动开发的环境搭建,拆成保姆级的一步一步,所有新手必踩的坑提前标注,所有报错都给你现成的解决方案,只要你跟着走,100% 一次搭建成功,绝对不会再被环境劝退。
开篇先定死 2 条红线(违反必踩坑,别头铁)
- 系统版本必须用 Ubuntu 20.04 LTS,别追新用 22.04/24.04!瑞芯微官方 SDK 对高版本 Ubuntu 兼容性极差,依赖库、编译工具链全不匹配,90% 的编译报错都是因为你用了高版本系统,新手别头铁。
- 虚拟机配置必须达标:内存≥8G(推荐 16G)、硬盘≥200G(固态优先)、CPU 核心≥4 核(推荐 8 核)。别给 2 核 4G+50G 硬盘,编译到一半直接内存溢出、磁盘爆满,神仙都救不了。
一、第一步:虚拟机 + Ubuntu 系统安装,新手首选 VMware
很多新手会纠结 "虚拟机还是双系统?",这里给小白终极结论:入门阶段 100% 选 VMware 虚拟机。
- 虚拟机不用折腾硬盘分区,就算系统崩了,快照一键恢复,零风险;
- 支持 Windows 和虚拟机剪贴板共享、文件拖拽,传文件、查资料极其方便;
- 等你入门了,编译需求大了,再换双系统完全来得及,别上来就给自己加难度。
1. 必备软件下载(全免费,不用找破解版)
表格
| 软件 | 版本要求 | 下载渠道 |
|---|---|---|
| VMware Workstation Player | 17 及以上免费版 | VMware 官网,个人非商业使用完全免费,不用找 Pro 破解版 |
| Ubuntu 20.04.6 LTS | 桌面版 64 位 | 清华大学开源镜像站(国内下载速度拉满,别去官网下,慢到离谱) |
2. 虚拟机新建与配置,一步不落
- 打开 VMware Player,点击【创建新虚拟机】,选择【典型 (推荐)】,下一步;
- 选择【安装程序光盘镜像文件 (ISO)】,浏览选中你下载好的 Ubuntu 20.04 ISO 镜像,下一步;
- 填写全名、用户名、密码(密码一定要记牢,后面 sudo 全靠它),下一步;
- 给虚拟机命名,选择安装位置(必须装在固态盘里! 机械盘编译速度慢 10 倍),下一步;
- 重点配置磁盘 :指定磁盘容量≥200G,勾选【将虚拟磁盘存储为单个文件】,下一步; 小白避坑:别给 50G/100G!RK SDK 解压完就占 50G+,编译完能到 150G+,给少了编译到一半磁盘爆满,直接前功尽弃。
- 点击【自定义硬件】,做最后核心配置,这步直接决定你的编译速度:
- 处理器:核心数≥4,推荐 8 核(你的 CPU 有多少线程,就给一半,别全给,Windows 会卡死);
- 内存:≥8G,推荐 16G(同理,给你电脑总内存的一半);
- 网络适配器:选【桥接模式】(后面开发板和虚拟机同网段,方便 ADB、NFS 调试);
- 打印机、声卡:没用,直接移除,减少资源占用;
- 配置完成,点击【完成】,启动虚拟机,自动进入 Ubuntu 系统安装。
3. Ubuntu 系统安装,避坑关键步骤
- 启动后,语言选择【中文 (简体)】,点击【安装 Ubuntu】;
- 键盘布局选【汉语】,下一步;
- 网络连接:先断开!别联网! 联网会自动下载更新,安装速度慢 10 倍,装完系统我们再换源更新;
- 更新和其他软件:选【正常安装】,勾选【为图形或无线硬件... 安装第三方软件】,下一步;
- 安装类型:选【清除整个磁盘并安装 Ubuntu】,别手动分区!虚拟机里完全没必要,新手手动分区极易踩坑,下一步;
- 时区选【上海】,下一步;
- 等待安装完成,大概 10-20 分钟,安装完成后点击【现在重启】,输入密码进入系统。
4. 系统基础配置,解决 90% 的后续问题
(1)更换国内软件源,下载速度拉满
Ubuntu 默认的源是国外的,下载软件慢到离谱,先换成清华源,一步搞定:
-
右键桌面,点击【在终端打开】,输入以下命令,备份原来的源文件: bash
运行
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak -
输入密码,执行完成后,用 gedit 打开源文件: bash
运行
sudo gedit /etc/apt/sources.list -
把文件里的所有内容全删掉,粘贴下面的清华源内容,保存关闭: bash
运行
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse -
执行更新命令,让源生效: bash
运行
sudo apt update && sudo apt upgrade -y等待执行完成,你的 Ubuntu 下载速度直接拉满。
(2)安装 VMware Tools,实现文件共享 + 剪贴板互通
这步是新手必备,不然 Windows 和虚拟机之间传文件、复制代码能把你逼疯:
-
点击 VMware 顶部菜单栏【虚拟机】→【安装 VMware Tools】,虚拟机里会弹出一个光盘图标;
-
打开光盘,把里面的
VMwareTools-xxx.tar.gz压缩包,复制到主目录下; -
打开终端,执行解压命令(xxx 替换成你的版本号): bash
运行
tar -zxvf VMwareTools-xxx.tar.gz cd vmware-tools-distrib sudo ./vmware-install.pl -
执行后,一路按回车默认即可,安装完成后重启虚拟机,就能实现 Windows 和虚拟机的剪贴板共享、文件拖拽了。
二、第二步:安装编译必备依赖库,解决 99% 的编译报错
很多新手 SDK 编译报错,99% 都是因为缺依赖库!这里我给大家整理了 RK3568/3588 安卓 SDK 编译全量依赖包,一行命令直接安装,不用一个一个找。
打开终端,直接复制下面的整段命令,执行即可:
bash
运行
sudo apt install -y git ssh make gcc g++ gawk bison flex device-tree-compiler \
libncurses5-dev libssl-dev lib32z1 lib32ncurses5-dev lib32stdc++6 \
zip unzip curl wget python python2 python3 perl sed bc lzop gperf \
xsltproc docbook-utils fop libxml2-utils openjdk-11-jdk openssh-server \
samba nfs-kernel-server vim net-tools htop screen
给小白讲几个关键依赖的坑,别踩:
- 32 位依赖库必须装 :
lib32z1、lib32ncurses5-dev这些,RK 的编译工具链是 32 位的,64 位 Ubuntu 不装这些,编译直接报错,新手必踩; - JDK 版本必须是 OpenJDK 11:安卓 11/12 编译必须用 JDK 11,别装 JDK 8/17,版本不对编译直接报错,上面的命令已经帮你装好了正确版本;
- 设备树编译器 dtc 必须装:后面修改设备树全靠它,提前装好省得后面报错。
安装完成后,执行下面的命令,校验 JDK 版本是否正确:
bash
运行
java -version
输出里显示openjdk version "11.0.xxx",就说明没问题了。
三、第三步:RK SDK 获取、解压与目录校验
1. SDK 获取渠道(新手别瞎找)
- 首选渠道:你买的 RK3568 开发板厂商,会给你适配好对应开发板的完整 SDK,不用自己从零适配板级配置,新手直接用这个,省 90% 的事;
- 避坑提醒:别去网上随便下陌生人分享的 SDK,要么缺文件,要么适配的板子和你的不一样,编译出来烧进去直接变砖,就用你开发板厂商给的,最靠谱。
2. SDK 解压,新手必踩的天坑预警
**绝对不能在 Windows 里解压 SDK,再传到虚拟机里!**SDK 里有大量的 Linux 软链接文件,Windows 解压会直接破坏软链接,导致编译的时候找不到文件,报一堆奇奇怪怪的错,神仙都救不了。
正确的解压步骤,一步都不能错:
-
把 SDK 压缩包(一般是
.tar.gz或者.7z格式),通过 VMware 共享文件夹,或者拖拽的方式,传到 Ubuntu 的主目录下; -
打开终端,执行解压命令,根据你的压缩包格式选: bash
运行
# tar.gz格式,最常用 tar -zxvf RK3568_Android11_SDK.tar.gz # 7z格式,需要先装7z解压工具:sudo apt install p7zip-full 7z x RK3568_Android11_SDK.7z -
等待解压完成,大概 10-20 分钟,解压完成后,进入 SDK 目录,执行下面的命令,校验软链接是否正常: bash
运行
cd RK3568_Android11_SDK ls -l u-boot如果输出里显示
u-boot -> u-boot-xxx,箭头指向正常,说明软链接没问题,解压成功;如果显示红色报错,说明解压坏了,重新按步骤解压。
3. SDK 目录回顾,重点目录再强调
解压完成后,再给小白强化一遍重点目录,后面 90% 的开发工作都在这几个目录里:
plaintext
RK3568_Android11_SDK/
├── kernel/ # 【核心】Linux内核源码,我们的驱动、设备树全在这里
├── hardware/ # 【核心】安卓HAL层源码,驱动的上层适配全在这里
├── device/ # 【核心】开发板板级配置,编译配置、分区配置全在这里
├── u-boot/ # 系统启动引导源码,入门阶段不用改
├── out/ # 编译输出目录,编译好的镜像、固件全在这里
├── build.sh # 【核心】瑞芯微官方一键编译脚本,后面全靠它
└── mkimage.sh # 固件打包脚本
四、第四步:SDK 首次编译,完整步骤 + 报错全解决
终于到了最关键的编译环节,别慌,跟着我的步骤走,绝对不会出问题。
1. 编译前的准备:选择开发板对应的编译配置
瑞芯微 SDK 里集成了很多开发板的配置文件,我们必须先选中自己开发板对应的配置,不然编译出来的固件根本用不了。
-
进入 SDK 根目录: bash
运行
cd ~/RK3568_Android11_SDK -
执行配置命令,加载开发板对应的配置文件: bash
运行
# 这里的xxx_defconfig,换成你开发板厂商给的配置文件名 # 比如野火的RK3568开发板,就是 ./build.sh firefly_rk3568_defconfig ./build.sh 你的开发板配置文件名小白避坑:配置文件一定要用你开发板厂商给的,别用网上随便找的,不然编译出来的固件烧进去,屏幕不亮、外设用不了,甚至直接变砖。
-
执行完成后,终端输出
configuration done,就说明配置成功了。
2. 一键全编译,执行命令
瑞芯微官方给我们写好了一键编译脚本build.sh,不用我们自己一点点编,一个命令搞定全编译:
bash
运行
./build.sh -AUCKu
给小白讲清楚每个参数的意思,不用死记,知道干嘛的就行:
-A:编译完整的安卓系统-U:编译 U-Boot-C:编译 Linux 内核-K:打包内核生成 boot.img-u:打包所有镜像,生成完整的烧录固件 update.img
3. 编译时长与注意事项
- 8 核 16G 内存的虚拟机,全编译时长大概 2-3 小时,4 核 8G 大概 4-6 小时,耐心等就行,别以为卡住了;
- 编译过程中,别关终端、别休眠虚拟机、别乱改 SDK 里的文件,不然编译中断,只能重来;
- 编译的时候,虚拟机内存占用会拉满,Windows 里别开大型软件,不然电脑直接卡死。
4. 编译成功校验
编译完成后,终端会输出#### make completed successfully ####,没有报错,就说明编译成功了!
执行下面的命令,查看生成的完整固件:
bash
运行
ls -l rockdev/Image-xxx/update.img
能看到update.img文件,大小大概 1-2G,就说明我们的环境搭建、SDK 编译,100% 成功了!
五、新手编译常见报错,100% 解决方案汇总
我把新手编译最容易遇到的报错,全给你整理好了,遇到直接对着解决就行,不用到处搜。
表格
| 报错类型 | 核心原因 | 解决方案 |
|---|---|---|
内存不足,out of memory |
虚拟机给的内存太小,编译链接阶段溢出 | 1. 给虚拟机加内存,至少 8G;2. 加 swap 交换分区,执行命令:sudo fallocate -l 16G /swapfile``sudo chmod 600 /swapfile``sudo mkswap /swapfile``sudo swapon /swapfile |
磁盘空间不足,No space left on device |
虚拟机硬盘给小了,编译满了 | 1. 先清理编译缓存:make clean;2. 关闭虚拟机,在 VMware 里扩容硬盘,然后在 Ubuntu 里用 gparted 工具扩容分区 |
权限报错,Permission denied |
用 sudo 执行过编译,导致文件权限混乱 | 绝对不要用 sudo 编译整个 SDK!执行命令修复权限:sudo chown -R 你的用户名:你的用户名 ~/RK3568_Android11_SDK |
找不到命令,command not found |
缺依赖库 | 重新执行本文第二步的依赖安装命令,把所有依赖全装上 |
Java 版本不对,unsupported class file version |
JDK 版本不是 11 | 执行命令切换 JDK 版本:sudo update-alternatives --config java在弹出的列表里,选中 OpenJDK 11 对应的编号,回车 |
软链接失效,No such file or directory |
在 Windows 里解压了 SDK,破坏了软链接 | 删掉原来的 SDK,重新在 Ubuntu 里解压压缩包,别在 Windows 里碰 |
结尾说两句
恭喜你!跟着这篇文章走到这里,你已经成功跨过了 RK 安卓驱动开发的最大拦路虎 ------ 环境搭建。
很多人入门就倒在这一步,而你已经完成了 SDK 的全编译,生成了可以烧录的完整固件,已经超过了 80% 刚入门的小白。
下一篇,我们直接进入实操的第二环节:搞定固件烧录 + 串口 + ADB 调试,手把手带你把编译好的固件烧进开发板,打通「编译 - 烧录 - 调试」的完整闭环,让你能实时看到内核日志、操作开发板系统,为后面写第一个驱动做好万全准备。
我是黒漂技术佬,关注我,带你零基础入门 RK 安卓驱动开发,不踩坑。有任何编译报错,评论区留言,我都会一一回复。