怎么看网站建设时间/百度如何免费推广
Rockchip Android13平台提取kernel环境编译KO
当需要给第三方提供kernel的ko编译环境时,又不想提供完整的kernel源码,则可以对kernel进行裁剪提取出最小的编译环境和编译器提供给第三方即可。
1. 编译器
Rockchip Android13平台kernel的编译器是clang,可以把android上面clang直接压缩包括,具体路径是:
prebuilts/clang/host/linux-x86/clang-r450784d
2. 下载一份完整的kernel源码,编进行GKI的ko编译
命令如下
export PATH=prebuilts/clang/host/linux-x86/clang-r450784d/bin:$PATH
make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 gki_defconfig rockchip_gki.config && make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 rk3588-evb1-lp4-v10.img -j32
3. 成功编译后再进行裁剪
find -name *.c | xargs rmfind -name *.ko | xargs rmfind -name *.img | xargs rmfind -name *.o | xargs rmfind -name *.a | xargs rmrm drivers/ -rfrm arch/arm64/boot/dts/rockchip/ -rfrm *.imgrm arch/arm64/boot/dts/ -rfrm .git -rfrm Documentation/ -rfrm vmlinuxrm ./crypto/rm ./crypto/ -rfrm ./arch/arm64/bootrm ./arch/arm64/boot -rfrm net/ -rfrm sound/ -rfrm fs/ -rfrm tools/ -rfrm block/ -rfrm arch/arm/boot/ -rfrm kernel/ -rfrm samples/ -rfrm -rf security/rm -rf usr/rm -rf ipc/
4. 编译第三方KO
按以上步骤提取编译后面后,就可以进行第三方的驱动KO编译了。下面以hello.ko为例进行说明
- 在任意目录创建hello目录并创建hello.c和对应的Makefile
hello.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>static int driver_all_init(void)
{printk("hello module\n");return 0;
}static void driver_all_exit(void)
{
}module_init(driver_all_init);
module_exit(driver_all_exit);MODULE_LICENSE("GPL");
MODULE_AUTHOR("jiazh");
MODULE_DESCRIPTION("a hello module");
Makefile
obj-m := hello.oKER= ../../kernel-5.10/all:@rm -rf *.ko@make -C $(KER) M=$(PWD) modules@rm -rf *.mod* *.sym* .*.cmd *.order *.oclean:@rm -rf *.ko@rm -rf *.mod* *.sym* .*.cmd *.order *.o
- 开始编译
先在kernel目录下配置clang的编译器
export PATH=。../prebuilts/clang/host/linux-x86/clang-r450784d/bin:$PATH
- 再进入hello目录下编译hello.ko
make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 -C ../../kernel-5.10 M=$PWD -j32
- 编译完成在hello目录下生成hello.ko