免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2436 | 回复: 7
打印 上一主题 下一主题

如何解决内核与模块之间的版本冲突 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-01 22:32 |只看该作者 |倒序浏览
我在linux8.0(内核2.4.18)下成功编译一个模块后,用insmod 命令插入模块时,出现错误,其大致意思是该模块只适合版本2.4.9-9,而本系统的内核版本是2.4.18-10,模块版本与系统内核版本无法匹配,请问该如何解决,谢谢!

论坛徽章:
0
2 [报告]
发表于 2003-04-02 08:35 |只看该作者

如何解决内核与模块之间的版本冲突

这个前两天刚讲过。用gcc -I/usr/src/linux-2.4/include参数来避免这个错误。

论坛徽章:
0
3 [报告]
发表于 2003-04-02 14:24 |只看该作者

如何解决内核与模块之间的版本冲突

谢谢!但还是无法插入,下面是具体的错误情况:

运行gcc -D__KERNEL__ -DMODULE -DMODVERSIONS -I/usr/include/linux -c mymodule.c -o mymodule.o后,一切正常

运行insmod mymodule.o
出现错误:kernel-module version mismatch:mymodule.o was
complied for kernel version 2.4.4-9,while this kernel is version 2.4.18-14

用insmod -f mymodule.o  强行插入时,出现如下信息:
You are trying to load a module without a GPL compatible license.....

听说从linux 2.4.10 版开始,插入模块时有一个注册码的问题,不知是否与此有关,该如何解决?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2003-04-02 15:49 |只看该作者

如何解决内核与模块之间的版本冲突

要去掉警告信息,需要定义你module的lincense.

方法如下:

在init_module中加入这句代码:

  1. MODULE_LICENSE("GPL");
复制代码


然后这样编译:

gcc -D__KERNEL__ -DMODULE -DMODVERSIONS --I/usr/src/linux-2.4.18-14/include -c mymodule.c -o mymodule.o

呵呵,sakulagi写的很清楚,你就是不用这个option

论坛徽章:
0
5 [报告]
发表于 2003-04-03 09:52 |只看该作者

如何解决内核与模块之间的版本冲突

谢谢!问题解决了。还有一个疑问,编译选项-I的作用是把-I后面的路径添加到编译过程中头文件的搜索策略中。在我的系统里,与内核有关的头文件都存放在/usr/include/linux下,根本不存在/usr/src/linux2.4.18-14/include这个目录,为什么使用-I/usr/src/linux2.4.18-14,而不使用-I/usr/include/linux这个选项呢?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2003-04-03 09:58 |只看该作者

如何解决内核与模块之间的版本冲突

这个是kernel的src路径,一般编译和kernel相关的都要用kernel的头文件路径。

把kernel-source-*.rpm装上就有了

论坛徽章:
0
7 [报告]
发表于 2003-04-04 08:24 |只看该作者

如何解决内核与模块之间的版本冲突

-I/usr/src/linux-2.4/include
好像我说的被…………

/usr/include是用户态编程使用的头文件,不能用于核心态编程

论坛徽章:
0
8 [报告]
发表于 2003-08-04 11:32 |只看该作者

如何解决内核与模块之间的版本冲突

我指定了编译路径为 -I/usr/src/linux-2.4.18-3/include 才编译成功的。
要不然编译就出错。编译成功后用insmod  hello.o还是出现错误::
kernel_module version mismatch.  hello.o was compliled for kernel
version 2.4.18-3custom,, while this kernel is version 2.4.18-3

请问 2.4.18-3custom 和 2.4.18-3有什么不同啊
我的编译命令:gcc -Wall -DMODULE -D__KERNEL__ -c hello.c -I /usr/src/linux-2.4.18-3/include

下面是源文件:
#include<linux/kernel.h>;
#include<linux/module.h>;

#if CONFIG_MODVERSIONS==1
#define MODVERSIONS
#include<linux/modversions.h>;
#endif

int init_module(void)
{
        printk("Hello World!\n";
        return 0;
}

void cleanup_module(void)
{
        printk("Goodbye\n";
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP