Chinaunix首页 | 论坛 | 博客
  • 博客访问: 218236
  • 博文数量: 88
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 555
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-03 13:08
个人简介

失意高调,得意低调

文章分类

全部博文(88)

文章存档

2021年(3)

2020年(2)

2018年(2)

2017年(3)

2016年(6)

2015年(19)

2014年(32)

2013年(21)

我的朋友

分类: LINUX

2013-12-02 18:42:01

写个my.c和一个Makefile文件,然后make编译一下,就成功了,生成my.ko

 

再加载一下insmod my.ko     dmesg|grep module 看到模块初始化时候的打印

卸载模块rmmod my.ko  dmesg|grep module  看模块卸载时候的打印

 

都是对的,看来以前学的东西还是记得了……再mark一下。

 

注意事项:

1、内核目录

2、Makefile中obj-m:=my.o 这个和源文件my.c要对应

3、mymodule-objs:=module 这个my也是和my.c对应的

如果源文件为your.c

这两句话就应该改为obj-m:=your.o

yourmodule-objs:=module

4、查看输出的时候 用dmesg输出信息太多,可以用grep过滤一下

dmesg | grep "keywords"



  1. #include   
  2. #include   
  3. #include   
  4. static int funcIn(void)  
  5. {  
  6.     printk("in module");  
  7.     return 0;  
  8. }  
  9. static void funcOut(void)  
  10. {  
  11.     printk("out module");  
  12.     return;  
  13. }  
  14. module_init(funcIn);  
  15. module_exit(funcOut);  
  16. MODULE_LICENSE("GPL");  
  17. MODULE_AUTHOR("elfy");  


Makefile 文件

我linux内核目录为/lib/modules/2.6.31-14-generic/build

具体看自己机器的文件


  1. obj-m:=my.o  
  2. mymodule-objs:=module  
  3. KDIR:=/lib/modules/2.6.31-14-generic/build  
  4. MAKE:=make  
  5. default:  
  6.     $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules  
  7. clean:  
  8.     $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean

阅读(1488) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~