Androidでlinux kernelドライバモジュールを単独コンパイルします。


Androidでlinux kernelドライバモジュールを単独コンパイルします。
本論文は参考にしましたhttp://blog.csdn.net/qq1084283172/article/details/56958136
2018-9-8再度編集
Makefile
ifneq ($(KERNELRELEASE),)

obj-m += hello.o

else

    KERNELDIR ?= /out/target/product//obj/KERNEL_OBJ/
    PWD ?= $(shell pwd)
    ARCH = arm64
    CROSS_COMPILE=/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-

.PHONY: modules clean

modules:
    $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNELDIR) M=$(PWD) modules
    #         ,         
clean:
    @rm -rf *.o *.order *.symvers *.mod.* .*.o.cmd .*.mod.o.cmd .*.ko.cmd .tmp_versions *.ko

endif
プロジェクトnameは商品の名前です。
注意事項
1.KERNELDIRの値について
もしあなたの「カーネル」コンパイルシステムが中間ファイルを生成するなら、outパスではなく、次のような経路である。
<aosp_path>/kernel
KERNELDIRの値はoutの下ではなく経路に変えます。
2.ARCHとCROSS_についてCOMPILEの値
もしあなたのARCHがarm 64ではないなら、あなたのCROSS_COMPILEの値も変えます。具体的な経路は大体同じです。ここでは並ばないです。
3.署名の問題
Androidの駆動モジュールはサインをオンしました。このように直接コンパイルしてもいいです。直接使うことはできません。具体的にどのように署名しますか?私のこのブログLinux kenelモジュールのカーネル署名問題の解決方法を見てください。
End
最後に、makeコマンドを使用して正確なハロー.koファイルをコンパイルすることができます。