Linux内核模块编程(3)

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时就可以看到程序运行的结果了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwszfj.html