Helloworld Makefile
DRI_NAME :=helloworld
obj-m :=$(DRI_NAME).o
KERNELDIR ?=/opt/source/os/linux-2.6.24
PWD ?=$(shell pwd)
default:
$(MAKE) -C ${KERNELDIR} M=${PWD} modules
clean:
@rm -rf *.o *.ko .tmp_versions *~ Module.symvers .*.cmd *.mod.c
# hello.o为你需要编译的源代码,若有多个源代码应使用方法二的方式
obj-m:=hello.o
#方法二
obj-m:=module.o
module-objs:=file1.o file2.o
单独构建linux内核树中的模块
比如dma,
1.查看linux-2.6.24/drivers/dma目录中的Makefile,选择一个要build的模块,我们选择obj-$(CONFIG_DMA_ENGINE) += dmaengine.o
2.然后在此目录里面执行
make CONFIG_DMA_ENGINE=m -C /opt/source/os/linux-2.6.24 M=/opt/source/os/linux-2.6.24/drivers/dma modules
总结:
-C 主要用来指明内核(即内核源代码目录,其中有内核的顶层makefile文件),M=选项让该makefile在构造modules目标之前返回到当前目录