在安卓源码下编译内核模块
hello.c
/* test hello.c */
#include <linux/module.h>
#include <linux/string.h>
static int __init test_module_init(void)
{
printk(KERN_DEBUG "test_module_init");
return 0;
}
static void __exit test_module_exit(void)
{
printk(KERN_DEBUG "test_module_exit");
}
module_init(test_module_init);
module_exit(test_module_exit);
MODULE_LICENSE("GPL");
Makefile:
1 KERNELDIR := /home/xxx/android/kernel_imx/
2 PWD :=$(shell pwd)
3 ARCH=arm
4 CFLAGS_MODULE=-fno-pic ####
5 CROSS_COMPILE=/home/xxx/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-
6 CC=$(CROSS_COMPILE)gcc
7 LD=$(CROSS_COMPILE)ld
8 obj-m := hello.o
9 modules:
10 $(MAKE) -C $(KERNELDIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=$(PWD) modules
11 clean:
12 rm *.o *.ko *.mod.c *.markers *.order *.symvers
注意:CFLAGS_MODULE=-fno-pic 一定要有,否则insmod出现错误: unknown relocation: 3 (Exec format error)