作家
登录

一个最简单的Linux驱动程序的编译运行

作者: 来源: 2017-10-25 09:04:13 阅读 我要评论

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!

2、printk("<6>Hello, world!/n");


一个最简单的Linux驱动法度榜样的编译运行

一、背景常识

可装载内核模块:为了使体系功能可以或许更灵活的扩充,Linux支撑内核的动态扩大,即在体系运行时给内核增长新的功能(即模块module)。

模块:模块(module)是一段可以被犊飕链接的目标代码(.ko),它可由insmod敕令动态的装载并链接到正在运行的内核。链接后,它就成了内核的一部分,直到用rmmod敕令解除链接并卸载。

Linux驱动法度榜样就是一种特别的可装载内核模块。

若何由源码(.c文件)生成动态链接的目标代码(即.ko文件)?

[html] view plain copy

  1. #include <linux/init.h> //声明头文件 
  2.  
  3. #include <linux/module.h> 
  4.  
  5. //模块加载函数 
  6.  
  7. static int hello_init(void) 
  8.  
  9.  
  10. printk(KERN_INFO " Hello World enter\n"); //体系调用打印函数,类似于用户调用的printf 
  11.  
  12. return 0; 
  13.  
  14.  
  15. //模块卸载函数 
  16.  
  17. static void hello_exit(void) 
  18.  
  19.  
  20. printk(KERN_INFO " Hello World exit\n "); 
  21.  
  22.  
  23. module_init(hello_init); //向体系注册模块加载函数 
  24.  
  25. module_exit(hello_exit); //向体系注册模块卸载函数 
  26.  
  27. MODULE_AUTHOR("Barry Song <21cnbao@gmail.com>"); //模块作者等信稀少明,可选 
  28.  
  29. MODULE_LICENSE("Dual BSD/GPL"); //模块许可证声明 
  30.  
  31. MODULE_DESCRIPTION("A simple Hello World Module"); //模块描述声明,可选 
  32.  
  33. MODULE_ALIAS("a simplest module"); //模块别号的声明,可选 

将这段法度榜样编译为hello.ko的步调:

解释:本代码在linux2.6以上测试运行经由过程。linux3.*也可。本人用ubuntu12.04,linux内核版本linux3.5。

1、编写makefile文件

[html] view plain copy

  1. KVERS = $(shell uname -r) #变量KVERS为当前linux版本值 
  2.  
  3. obj-m += hello.o 
  4.  
  5. default
  6.  
  7. make -C /lib/modules/$(KVERS)/build M=$(CURDIR) modules 

-C后面是linux内核源码树目次,M=后面是源码目次

2、在终端下输入 cd /**/**,找到hello.c源码地点的目次


3、在终端输入 make敕令。

4、如图所示即可生成hello.ko文件。

其他文件是生成的一些中心文件。

三、装载

加载:在终端输入insmod敕令,模块加载完成。

留意:如不雅终端没有打印printk语句,在linux体系日记文件/var/log/syslog中查看。

卸载:在终端输入remmod敕令。

二、编译内核模块


  推荐阅读

  谷歌推出视频数据库“AVA”,中国联通与腾讯合作共建云数据中心

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 其数据库中的近5.8万个视频片段,涉及到了很多日常晃荡,比如握手、踢腿、拥抱、接吻、喝酒、玩乐谱、漫步等>>>详细阅读


本文标题:一个最简单的Linux驱动程序的编译运行

地址:http://www.17bianji.com/lsqh/38157.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)