内核模块编程1
Linux设备驱动是以模块的形式驻留内存,设备驱动编程基本上遵循内核模块编程
准备文件
/*main.c*/ #include <linux/init.h> #include <linux/module.h> static int hello_init(void) { printk(”hello!hello_init\n”); return 0; } static void hello_exit(void) { printk(”hello!hello_exit\n”); } module_init(hello_init); module_exit(hello_exit);
#Makefile
PWD= $(shell pwd)
KERNEL_SRC= /usr/src/linux-headers-2.6.27-7-generic/
obj-m := hello.o
hello-objs:=main.o
all:
$(MAKE) –C $( KERNEL_SRC) M=$(PWD)
clean:
rm *.ko
rm *.o
将main.c 和Makefile放在同一目录下,执行make就会生成hello.ko
进入终端
>$make
>$sudo insmod ./hello.ko
>$dmesg
>$sudo rmmod ./hello.ko
>$dmesg
说明:
obj-m := hello.o 表明编译出的是hello.ko
hello-objs:=main.o 表明需要使用 main.c
M=$(PWD)是指明当前目录下查找源文件