分类: LINUX
2012-08-03 17:43:32
在Linux2.6版本驱动模块编译时,必须为驱动程序编写一个Makefile,下面提供一个Makefile模板。当驱动程序名称不同的时候,只需要把obj-m后面的目标文件名称改成相应的即可(如驱动代码为led8n.c即改为led8n)。
obj-m :=demo.o
CROSS_COMPILE =arm-linux-
CC = $(CROSS_COMPILE)gcc
#CC = gcc
KDIR :=/work/kernel/linux-2.6.24
#KDIR :=/lib/modules/2.6.21-1.3194.fc7/build
PWD :=$(shell pwd)
default:
$(MAKE) –C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.o* *~ core .depend .*.cmd *.ko *.mod.c
rm -rf .tmp_versions/
注解:
n obj-m指定最终生成驱动程序ko文件的名称。
n CROSS_COMPILE指定交叉编译器名称,当驱动在arm平台使用时,不需要注释掉,如果驱动需要在x86平台使用,使用#注释掉即可。
n KDIR指定内核源码树的路径,此时需要了解你的目标平台所使用的Linux内核版本号,将其指定到内核源代码树的位置;而且必须保证内核源代码树arch/boot下面存在已经编译成功的zImage内核文件。
n default与clean后面是指定在终端执行make 和make clean时所要执行的命令行。需要注意的是$(MAKE)和rm –rf前面是一个TAB空格,而且是另起一行书写。