linux模块编译.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux模块编译

linux 模块编译步骤 原 本文将直接了当的带你进入linux的模块编译。当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者能够看懂。之所以要写这篇文章,主要是因为从书本上学的话,可能要花更长的时间才能学会整个过程,因为看书的话是一个学习过程,而我这篇文章更像是一个培训。所以实践性和总结性更强。通过本文你将会学到编译一个模块和模块makefile的基本知识。以及加载 卸载 模块,查看系统消息的一些知识; 声明:本文为初学者所写,如果你已经是一个linux模块编译高手,还请指正我文章中的错误和不足,谢谢 第一步:准备源代码 首先我们还是要来编写一个符合linux格式的模块文件,这样我们才能开始我们的模块编译。假设我们有一个源文件mymod.c。它的源码如下: mymodules.c 1. #include /* 引入与模块相关的宏 */ 2. #include /* 引入module_init module_exit 函数 */ 3. #include /* 引入module_param */ 4 5. MODULE_AUTHOR Yu Qiang ; 6. MODULE_LICENSE GPL ; 7 8. static int nbr 10; 9. module_param nbr, int, S_IRUGO ; 10. 11. static int __init yuer_init void 12. 13. ?? int i; 14. ?? for i 0; i nbr; i++ 15. 16. printk KERN_ALERT Hello, How are you. %d\n, i ; 17. 18. ?? return 0; 19. 20. 21.static void __exit yuer_exit void 22. 23. ?? printk KERN_ALERTI come from yuers module, I have been unlad.\n ; 24. 25. 26. module_init yuer_init ; 27. module_exit yuer_exit ; 我们的源文件就准备的差不多了,这就是一个linux下的模块的基本结构。第9行是导出我们的符号变量nbr。这样在你加载这个模块的时候可以动态修改这个变量的值。稍后将演示。yuer_init()函数将在模块加载的时候运行,通过输出的结果可以看到我们的模块是否加载成功。 第二步:编写Makefile文件 首先还是来看看我们Makefile的源文件,然后我们再来解释; Makefile obj-m : modules.o #要生成的模块名 modules-objs: mymod.o #生成这个模块名所需要的目标文件 KDIR : /lib/modules/`uname -r`/build PWD : $ shell pwd default: make -C $ KDIR M $ PWD modules clean: rm -rf *.o .* .cmd *.ko *.mod.c .tmp_versions 现在我来说明一下这个Makefile。请记住是大写的Makefile而不是小写的makefile; obj-m :这个变量是指定你要声称哪些模块模块的格式为 obj-m : .o modules-objs :这个变量是说明声称模块modules需要的目标文件 格式要求?? -objs : 切记:模块的名字不能取与目标文件相同的名字。如在这里模块名不能取成 mymod; KDIR?? :这是我们正在运行的操作系统内核编译目录。也就是编译模块需要的环境 M :指定我们源文件的位置 PWD?? :这是当前工作路径$ shell?? 是make的一个内置函数。用来执行shell命令。 第三步:编译模块 现在我们已经准备好了我们所需要的源文件和相应的Makefile。我们现在就可以编译了。在终端进入源文件目录输入make 运行结果: make[1]: Entering directory `/usr/src/linux-headers-2.6.24-24-generic CC [M] /home/yuqiang/桌面/mymodule/mymodules.o LD [M] /home/yuqiang/桌面/mymodule/modules.o Building modules, stage 2. MODPOST 1 modules CC /home/yuqiang/桌面/mymodule/modules.mod.o LD [M] /home/yuqi

文档评论(0)

cbf96793 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档