Rockchip Android13平台提取kernel环境编译KO

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 rm
 find -name *.ko | xargs rm
 find -name *.img | xargs rm
 find -name *.o | xargs rm
 find -name *.a | xargs rm
 
 rm drivers/ -rf
 rm arch/arm64/boot/dts/rockchip/ -rf
 rm *.img
 rm arch/arm64/boot/dts/ -rf
 rm .git  -rf
 rm Documentation/ -rf
 rm vmlinux
 rm ./crypto/
 rm ./crypto/ -rf
 rm ./arch/arm64/boot
 rm ./arch/arm64/boot -rf
 rm net/ -rf
 rm sound/ -rf
 rm fs/ -rf
 rm tools/ -rf
 rm block/ -rf
 rm arch/arm/boot/ -rf
 rm kernel/ -rf
 rm samples/ -rf
 rm -rf security/
 rm -rf usr/
 rm -rf ipc/

4. 编译第三方KO

按以上步骤提取编译后面后,就可以进行第三方的驱动KO编译了。下面以hello.ko为例进行说明

  1. 在任意目录创建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.o

KER= ../../kernel-5.10/

all:
	@rm -rf *.ko
	@make -C $(KER) M=$(PWD) modules
	@rm -rf *.mod* *.sym* .*.cmd *.order *.o

clean:
	@rm -rf *.ko
	@rm -rf *.mod* *.sym* .*.cmd *.order *.o

  1. 开始编译
    先在kernel目录下配置clang的编译器
export PATH=../prebuilts/clang/host/linux-x86/clang-r450784d/bin:$PATH
  1. 再进入hello目录下编译hello.ko
make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1  ARCH=arm64 -C ../../kernel-5.10 M=$PWD -j32
  1. 编译完成在hello目录下生成hello.ko

猜你喜欢

转载自blog.csdn.net/weixin_43245753/article/details/129627787