跳转至

编译

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 等中间文件不完整

  • 编译前确保有足够电量/供电,不要在编译过程中强制中断;使用 screentmux 后台运行编译,避免 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 清理分层:

rm -rf out/                                    # 最彻底,重新编译全部
rm -rf build/rootfs-base/                      # 仅清理文件系统相关编译
rm -rf build/linux-*/                          # 仅清理内核编译产物

根据报错位置选择清理范围可节省时间

  • 编译缓存: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 -- <文件> — 放弃工作区中指定文件的修改,还原到最近一次提交状态