当前位置:   article > 正文

AOSP13搭建基于Clang的ko交叉编译环境_clang编译ko

clang编译ko

AOSP13的内核使用的编译器为Clang,因此搭建AOSP13的ko编译环境,也需要使用Clang。搭建过程记录如下:

1、创建工程目录

  1. drwxr-xr-x 2 root root 4096 Nov 30 16:58 clang
  2. drwxr-xr-x 2 root root 4096 Nov 30 16:59 kernel_out
  3. drwxr-xr-x 2 root root 4096 Nov 30 16:57 ko-codes

clang:为编译器所在目录,可以将AOSP13自带的Clang(目录为prebuilts/clang)拷贝进去。

kernel_out:为kernel编译产物的目录,将 out/android13-gs-pixel-5.10/private/gs-google 拷贝进去即可。

ko-codes为ko的代码目录,包含源码 hello.c 及 Makefile 。

2、ko源码及Makefile

hello.c

  1. #include <linux/module.h>
  2. #include <linux/init.h>
  3. #include <linux/kernel.h>
  4. #include <linux/types.h>
  5. #include <linux/kmod.h>
  6.  
  7. static int __init  hello_init(void)
  8. {
  9.     printk("hello world!\n");
  10.     
  11.     return 0;
  12. }
  13. static void __exit hello_exit(void)
  14. {
  15.     return;
  16. }
  17. module_init(test_init);
  18. module_exit(test_exit);
  19. MODULE_LICENSE("GPL");

Makefile 

  1. PWD := $(shell pwd)
  2. WORK_DIR=$(PWD)/..
  3. ARCH=arm64
  4. CLANG_TRIPLE=aarch64-linux-gnu-
  5. CC=$(WORK_DIR)/clang/host/linux-x86/clang-r450784e/bin/clang
  6. AR=$(WORK_DIR)/clang/host/linux-x86/clang-r450784e/bin/llvm-ar
  7. NM=$(WORK_DIR)/clang/host/linux-x86/clang-r450784e/bin/llvm-nm
  8. LD=$(WORK_DIR)/clang/host/linux-x86/clang-r450784e/bin/ld.lld
  9. obj-m := hello.o
  10. KERNELDIR := $(WORK_DIR)/kernel_out
  11. all:
  12. make -j8 CC=$(CC) AR=$(AR) NM=$(LLVM_NM) LD=$(LD) ARCH=$(ARCH) CLANG_TRIPLE=$(CLANG_TRIPLE) -C $(KERNELDIR) M=$(PWD) modules
  13. clean:
  14. rm -rf *~ *.ko *.o *.mod.c *.order .*.cmd .tmp_versions Module.symvers *.unsigned *.mod *.symversions .*.d

3、编译和加载

进入ko-codes目录,然后执行 make,会生成 hello.ko

将hello.ko拷贝到手机/data/local目录下,执行 insmod /data/local/hello.ko。

如果要确认是否加载成功,可以执行 lsmod | grep hello,如果打印出来说明加载成功。

如果要卸载ko,执行 rmmod hello 即可。

4、说明

1)如何确定AOSP使用的clang版本

     从 out/android13-gs-pixel-5.10/private/gs-google/include/generated/compile.h 查看LINUX_COMPILER 或者 查看prebuilts/clang/host/linux-x86/README.md

2)对于AOSP的clang版本,需要指定 CLANG_TRIPLE, CROSS_COMPILE 不需要指定。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/311711
推荐阅读
相关标签
  

闽ICP备14008679号