一、前言
在我们接触到一个新的平台时,最重要的就是熟悉编译手段达到快速开发的目的,在开发中主要需要编译的就是uboot、kernel、Android文件系统
二、编译uboot
根据这个shell脚本来编译
使用下面这个方法编译uboot
./build.sh -U
编译完成后在会在rockdev/Image-rk3568_s目录中生成uboot.img
三、编译内核
使用下面这个方法编译kernel,编译后会在 rockdev/Image-rk3568_s 目录下生成 boot.img
./build.sh -CKA
也可以在kernel目录下写一个脚本来快速编译内核,创建makekernel.sh,代码如下:
make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/clang LD=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/ld.lld rockchip_defconfig android-11.config && make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/clang LD=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/ld.lld BOOT_IMG=../rockdev/Image-rk3568_s/boot.img rk3568-evb1-ddr4-v10.img
在kernel目录下编译,编译成功后会在该目录下生成boot.img
./makekernel.sh
四、编译Android文件系统
在源码根目录找到build.sh,找到make installclean命令,将其注释掉,以达到快速编译的结果,然后进行编译,编译命令如下:
./build.sh -A
编译后会在 rockdev/Image-rk3568_s 目录下生成 super.img,这样编译太久了。我们在开发中使用模块编译,采用mm命令,在文件目录中若存在Android.mk中执行mm编译该目录,或者使用mmm -指定目录,编译出来的so或其他文件,通过adb工具push到机器中,重启后再验证就可以了。使用此命令前需要把mm指令添加到环境变量中
source build/envsetup.sh
lunch rk3568_s-userdebug
五、总结
我们在开发中经常会遇到难以解决的问题,我们通常都是百度,但是经常找不到方法,我们可以使用谷歌来进行搜索