一、Makefile
ifeq ($(KERNELRELEASE),)
// 内核路径
#KERNELDIR ?= /home/lht/kernel2.6/linux-2.6.14
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
.PHONY: modules modules_install clean
else
obj-m := hello.o
Endif
linux@ubuntu:~/first/ex1-hello-world$ make
Makefile:1: KERNELRELEASE=
make -C /lib/modules/2.6.35-22-generic/build M=/home/linux/first/ex1-hello-world modules make[1]: Entering directory `/usr/src/linux-headers-2.6.35-22-generic'
/home/linux/first/ex1-hello-world/Makefile:1: KERNELRELEASE=2.6.35-22-generic
CC [M] /home/linux/first/ex1-hello-world/hello.o
Building modules, stage 2.
/home/linux/first/ex1-hello-world/Makefile:1: KERNELRELEASE=2.6.35-22-generic MODPOST 1 modules
CC /home/linux/first/ex1-hello-world/hello.mod.o
LD [M] /home/linux/first/ex1-hello-world/hello.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.35-22-generic'
linux@ubuntu:~/first/ex1-hello-world$ modinfo hello.ko
filename: hello.ko
license: GPL
srcversion: F2392AD4883D570D3E3FD56
depends:
vermagic: 2.6.35-22-generic SMP mod_unload modversions 686
1、编写模块程序: