linux – 致命:未找到模块hello.ko
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 致命:未找到模块hello.ko,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1478字,纯文字阅读大概需要3分钟。
内容图文
![linux – 致命:未找到模块hello.ko](/upload/InfoBanner/zyjiaocheng/957/265482d4d3474fcf9f49c014c33cf8b9.jpg)
我使用的是CentOS-6.5,默认内核是2.6.32-431.11.2.el6.x86_64.我下载了2.6.32并构建了该内核(在/lib/modules/2.6.32下).
我为简单的hello world程序编写了一个模块.该计划正在以下案例中运作:
Makefile:/ lib / modules / $(shell uname -r)/ build(默认内核)
$sudo insmod hello.ko
$dmesg
module inserted..
hello world..
我的程序不适用于以下情况:
Makefile:/lib/modules/3.2.32/build(新建内核)
$sudo insmod hello.ko
insmod: error inserting 'hello.ko': -1 Invalid module format
dmesg:
hello: disagrees about version of symbol module_layout
我尝试了modprobe两种情况,它显示下面的错误
致命:未找到模块问候.
如何使用2.6.32内核编译我的模块?
解决方法:
Linux内核包含数据结构,其布局不仅因版本而异,还取决于编译选项.因此,在编译内核模块时,您不仅需要拥有内核源代码的头文件,还需要拥有内核编译期间生成的一些头文件.仅仅解压缩内核源代码是不够的.
使用CONFIG_MODVERSIONS构建的内核,版本号可以不同,但??数据结构的布局必须相同.此选项在Ubuntu内核中激活.使用此选项,除了标题之外,还需要根据正确的Module.symvers文件编译模块.与大多数发行版一样,CentOS将此文件包含在与编译产生的内核头相同的包中. CentOS内核头包称为kernel-headers;确保安装与您正在编译的内核相匹配的版本.另请参阅CentOS文档中的Overview of kernel packages和Wiki上的You do not need the full kernel source.
在没有CONFIG_MODVERSIONS的情况下构建内核(如果编译自己的内核可能就是这种情况),加载模块时的检查是一个简单的版本检查.您可以获取解压缩的内核源代码,复制在运行内核编译期间使用的.config,然后运行make modules_prepare.您有责任验证您对内核所做的任何补丁都不会影响二进制兼容性.
内容总结
以上是互联网集市为您收集整理的linux – 致命:未找到模块hello.ko全部内容,希望文章能够帮你解决linux – 致命:未找到模块hello.ko所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。