<pre name="code" class="html"><pre name="code" class="html">#makefile for kernel module
MODNAME = hell o #你要编译的模块名 #如果已经定义KERNELRELEASE,则说明是从内核构造系统调用的,#因此科利用其内建语句ifneq ($(KERNELRELEASE),)<span id="transmark"></span> obj-m := $(MODNAME).o#否则,是直接从命令行调用的#这时要调用内核构造系统else KERNELDIR ?= /lib/modules/$(shell uname -r)/build
endifpwd := $(shell pwd)default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
@rm -rf *.o *.ko *.mod.* .$(MODNAME).* .tmp* module* Module*
#另一种方法,其实都是一个道理
#makefile for kernel module
MODNAME = chardevicedriver
PLATFORM=PC
ifeq ($(PLATFORM),PC)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
else
KERNELDIR ?= /usr/src/$(shell uname -r) #如果说是交叉编译,可以改成自己的内核路径,把PLATFORM那行注释掉就可以了
endif
obj-m := $(MODNAME).o
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
@rm -rf *.o *.ko *.mod.* .$(MODNAME).* .tmp* module* Module*
就是用这个makefile调用内核目录中Makefile编译你写的helloworld模块