由于工作原因,需要开发一个Android平台的LKM。我不太确定如何交叉编译我的 AndroidModule.c 以及为此使用什么工具。我想我需要 Android 的源代码才能告诉编译器从那里链接库,对吧? 我还需要下载适用于 Android 的 ARM 编译器。 我认为有了这三样东西就足够了(C 语言的 LKM 代码、Android 源代码、Android 的 ARM 编译器)。 问题是我找不到任何解释如何为 Android 编译 LKM 的教程。 我将非常高兴获得更多相关信息。
最佳答案
这是我用来为 Android 构建模块的 makefile。 我假设您在某处有一份 Linux 源代码的副本,并且您已经为您的手机构建了内核。 在您的模块目录中,我放置了一个 Makefile,如下所示:
ifneq ($(KERNELRELEASE),)
obj-m := mymod.o
else
COMPILER ?=/pathtoandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
CROSS_COMPILE ?=$(COMPILER)
ARCH ?=arm
KERNELDIR ?= /home/kernel/androidkerneldir/
PWD := $(shell pwd)
EXTRACFLAGS += -I$(PWD)/somedirectory/shomewhere
default:
$(MAKE) -C $(KERNEL_DIR) M=`pwd` ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) EXTRA_CFLAGS=$(EXTRACFLAGS) modules
clean:
rm *.o *.ko
install:
adb push mymod.ko /system/lib/modules
这应该可以为您完成。确保您对/system 目录具有写入权限。
关于android - Android平台交叉编译LKM模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4849063/