嵌入式驱动关于Makefile的编写例子

时间:2022-01-11 12:43:41
linux 驱动总结 linux驱动接口里的_init _exit 其实就是宏。 linux驱动程序不能用GCC直接编译生成模块。要用makefile ifneq ($(KERNELRELEASE),)
obj-m := test.o
else
#KERNELDIR ?= /lib/modules/$(shell uname -r)/build
KERNELDIR := /home/twei/code/linux-2.6.35.3
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.order *.symvers   

其中值得注意的是$(MAKE) -C $(KERNELDIR) M=$(PWD) modules和rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.order *.symvers这两句前面需要加入TAB键,因为它们是命令,具体详细解释请参考Makefile的详细教程,而KERNELDIR属于linux内核的编译路径,obj-m :=test.o属于需要编译的驱动模块,一般情况只需要简单的修改test.o的名字就能正常的编译。