为了省去每次编译内核的麻烦,于是采用模块的方式进行编写,这样会省很多时间。
makefile:
#
# gpio_keys
#
PWD :=$(shell pwd)
KERNELDIR := /home/zjf/R40/lichee/linux-3.10
ARCH=arm
CROSS_COMPILE = /home/zjf/R40/lichee/out/sun8iw11p1/linux/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)ld
obj-m += gpio_keys.o
modules:
$(MAKE) -C $(KERNELDIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=$(PWD) modules //必须TAB缩进
clean:
make -C $(KERNELDIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=$(PWD) clean //必须TAB缩进
上面不缩进的话会提示:Makefile:24: *** missing separator。 停止。
要编译的.c 文件可以放在其他地方,不一定非要放在内核目录下,编译后会在当前目录生成 .o 和.ko文件。