1 obj-m:=module.o
2
3
4 CURRENT_PATH :=$(shell pwd)
5 VERSION_NUM :=$(shell uname -r)
6 LINUX_PATH :=/usr/src/linux-headers-$(VERSION_NUM)
7
8 all :
9 make -C $(LINUX_PATH) M=$(CURRENT_PATH) modules
10 clean :
11 make -C $(LINUX_PATH) M=$(CURRENT_PATH) clean
----------------------------------------------------------------------
经过上面的模块编程和Makefile的编程,我们就可以对我们的程序进行编译链接和运行了
四. 内核模块的操作过程
1> 在控制台输入 make 进行编译链接
2> 正确后在控制台输入 sudo insmod module.ko (加载模块)
3> 在控制台输入 dmesg 查看结果
4> 在控制台输入 rmmod tiger( 卸载模块 )
5> 输入 dmesg 查看结果
( 或者用 cat /var/log/syslog 查看系统日志文件)
6>make clean( 去除中间生成的文件)
----------------------------------------------------------------------
现在我们就总体来实践一下,来体验一下。编写内核模块程序的乐趣
module.c
1 #include<linux/kernel.h>
2 #include<linux/init.h>
3 #include<linux/module.h>
4 MODULE_LICENSE("Dual BSD/GPL");
5
6 static int __init hello_init(void)
7 {
8 printk("Hello world\n");
9 return 0;
10 }
11
12 static void __exit hello_exit(void)
13 {
14 printk("Bye Corne\n");
15
16 }
17 module_init(hello_init);
18 module_exit(hello_exit);
Makefile
1 obj-m:=module.o
2
3
4 CURRENT_PATH :=$(shell pwd)
5 VERSION_NUM :=$(shell uname -r)
6 LINUX_PATH :=/usr/src/linux-headers-$(VERSION_NUM)
7
8 all :
9 make -C $(LINUX_PATH) M=$(CURRENT_PATH) modules
10 clean :
11 make -C $(LINUX_PATH) M=$(CURRENT_PATH) clean
在终端输入 make
think@Ubuntu:~/work/moudule/mokua_biancheng$ make
make -C /usr/src/linux-headers-2.6.32-25-generic M=/home/think/work/moudule/mokua_biancheng modules
make[1]: 正在进入目录 `/usr/src/linux-headers-2.6.32-25-generic'
Building modules, stage 2.
MODPOST 1 modules
make[1]:正在离开目录 `/usr/src/linux-headers-2.6.32-25-generic'
think@ubuntu:~/work/moudule/mokua_biancheng$
think@ubuntu:~/work/moudule/mokua_biancheng$ sudo insmod module.ko
think@ubuntu:~/work/moudule/mokua_biancheng$ dmesg
[19011.002597] Hello world
Tiger-John:当程序没有错误时,当我们输入dmesg时就可以看到程序运行的结果了。