编译
Q1: 修改 kernel 配置编译后 WiFi 功能异常?¶
- rootfs 惰性编译,WiFi 相关驱动未更新,需要执行 ./build.sh clean 命令清除后重新编译
- SDK 的构建系统会检查文件时间戳,只重新编译更改过的部分。但如果 rootfs(文件系统)中的 WiFi 固件和内核模块是作为预编译二进制打包的,内核 .config 改动不会触发 rootfs 重新打包
Q2: RK SDK 编译报错缺少 xxx.dtsi 文件?¶
-
多屏镜像编译中断会残留中间文件,可执行 git checkout 还原后重新编译
-
详细操作:
git status # 查看工作区状态,确认哪些文件被修改或删除
git checkout -- <文件路径> # 还原特定文件
# 或全局还原:
git checkout . # 放弃所有修改(谨慎使用,会丢失所有本地修改)
-
设备树文件采用层级包含关系(如
rk3576.dtsi包含rk3576-pinctrl.dtsi),编译时会根据依赖生成中间文件。中断编译可能导致*.dtsi.dtb.o等中间文件不完整 -
编译前确保有足够电量/供电,不要在编译过程中强制中断;使用
screen或tmux后台运行编译,避免 SSH 断连导致编译中断
Q3: RK Linux SDK 不支持 build.sh 编译文件系统?¶
- RK356x/RK3588 的 Linux SDK 不推荐用 build.sh 编译文件系统,目前以 rootfs.img 方式维护,建议直接使用我们网盘提供的 rootfs.img 进行开发
- RK Linux SDK 的文件系统配置复杂,依赖大量外部包和交叉编译工具链,build.sh 在部分 SDK 版本中没有集成完整的 rootfs 编译流程
- 从网盘下载预编译的 rootfs.img,如需定制 rootfs,使用 QEMU + chroot 方式挂载 rootfs.img 修改
Q4: AW SDK 如何清理重新编译?¶
-
Android:
build.sh clean清理编译输出;Buildroot:删除out/目录后重新./build.sh lunch→./build.sh;编译报错时删除build/rootfs-base/路径后重新编译 -
build.sh clean清理out/target/product/下的编译产物但不清理交叉工具链;build.sh distclean更彻底(清理所有编译配置);build.sh update-api && build.sh clean && build.sh清理后重新全量编译 -
AW Buildroot 清理分层:
根据报错位置选择清理范围可节省时间
- 编译缓存:
ccache可加速重新编译:export USE_CCACHE=1 && export CCACHE_DIR=~/.ccache && prebuilts/misc/linux-x86/ccache/ccache -M 50G
Q5: 如何查看当前 SDK 版本和 Git 提交记录?¶
git log— 查看完整提交历史git status— 查看工作区状态git diff— 查看文件更改git checkout -- <文件>— 放弃工作区中指定文件的修改,还原到最近一次提交状态