当前位置:  技术问答>linux和unix

模块问题?困惑中

    来源: 互联网  发布时间:2015-09-19

    本文导语:  最近搞到一本,照着书上敲了一个模块的例子!编译后insmod! 报错: kernelhello.o: kernel-module version mismatch         kernelhello.o was compiled for kernel version 2.4.20         while this kernel is version 2.4.22-1.2115.nptl. 用的...

最近搞到一本,照着书上敲了一个模块的例子!编译后insmod!
报错:
kernelhello.o: kernel-module version mismatch
        kernelhello.o was compiled for kernel version 2.4.20
        while this kernel is version 2.4.22-1.2115.nptl.
用的是Fedora core 1
小弟菜鸟还望各位大虾指点一二.
希望各位不要只说毛病,要给出解决办法的哟:)

|
在内核源代码中include/linux/version.h头文件中的UTS_RELEASE宏,定义了一个版本信息,
由它来指定我们编译的内核的版本信息,也就是uname -r 得到当前运行的内核版本信息。
而我们编译的模块时,也要指定版本信息,也是通过这个宏来指定的,你想为不同的内核版本
编译模块,就要包含相应内核源码中的该头文件,以保证你的模块可以在该内核中运行。
有一个基本的原则,要在一个运行的内核中插入模块,内核的版本和你编译的模块的版本要是一致的。

比如你现在有一个2.4.23的内核源码,你使用这个源码编译好了一个内核
当你你想为你编译好的2.4.23的内核编译要插入的模块,你就要使用2.4.23源码中的相应的头文件。
这样你的内核和模块都使用的是同一套头文件,UTS_RELEASE的值也一样,版本就一致了。

RH 9安装以后,如果你不作修改的话直接进入内核源代码中重新编译内核,
得到的内核版本是2.4.20-8-custom,因为系统默认UTS_RELEASE就是这个值,为了避免安装的时候覆盖掉自带的2.4.20-8内核。

|
insmod -f是强制装载内核,如果内核不支持强制装载也会失败的.

最解决根本的方法就是改头文件
/usr/include/version.h中有个宏UTS_RELEASE,把它改成你当前内核的版本信息(用uname -r得到)就好了

|
并不是程序错了,而是版本不匹配,
用insmod -f ... 即可.

|
insmod -f ./kernelhello.o ,
其他的以后拿书再往后看吧.

|
方式一:
这样编译gcc -c hello.c -I/usr/src/linux-2.4/include -o hello.o
方式二:
cd /usr/src/linux-2.4
make mrproper
make menuconfig(随便弄一下)
make dep
然后再编译

    
 
 

您可能感兴趣的文章:

  • 弱弱的问一个关于"模块化编程"的问题
  • 关于驱动模块和中文的问题,问题比较傻,还望大家赐教
  • 关于rsync同步模块配置问题
  • 模块依赖小问题,请各位大大帮忙
  • 驱动模块断电重加载问题
  • 内核模块的问题
  • Linux 内核模块编程问题!!!!
  • iptables时间模块的安装问题
  • 升级内核之后,模块加载问题
  • 加载模块的问题!
  • 菜鸟问题,载入模块!
  • 驱动模块编译调试问题、、????
  • 模块版本匹配问题
  • 请教!出现这个提示是什么原因..是模块版本问题,还是其他问题..http://220.114.102.28/xitong/ProductShow.asp?ArticleID=82
  • 编译模块的时候出现的问题
  • 关于helloworld模块的输出问题。
  • 关于驱动模块卸载不成功的问题
  • 关于Linux下模块编程的问题请教,急急急急急急
  • 关于qt与内核模块交互的问题
  • 模块编译问题!!!!!!!1
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python异常模块traceback用法举例
  • Linux中一个模块中的函数如何被另一个模块调用?
  • Python的MySQLdb模块安装
  • insmod模块无显示,但rmmod模块有显示
  • *******是不是对内核模块编程然后再重新编译内核就可以把此模块整合到linux系统中
  • 传感器模块、gprs模块如何和我的2440开发板相连
  • 大侠帮忙!模块调试(非内核模块)
  • 想删除内核中的一个模块,输入命令后,系统提示该模块不存在。但是我lsmod时,它在/proc/modules中。求解。
  • 驱动模块可以编入内核,想单独编译成模块,makefile怎么写?
  • 同机装有Windows和Linux两套系统(先装Win后装Linux),如何使计算机使用Windows的启动模块而不是Linux的启动模块?
  • 自己写的内核模块与用户模块通信(交互)
  • 如何停止模块运行
  • 模块的安装求助
  • 自定义内核模块禁止启动图形界面
  • 使用非root用户加载模块出错
  • 如何想向内核添家一个自定义的模块?
  • 关于LINUX内核模块的按需卸载及安装
  • linux内核模块间调用函数
  • 内核模块和设备驱动的区别?
  • linux怎样将网卡接收到的数据包交给不同模块处理
  • 内核模块编程打印进程信息


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3