lining_li 发表于 2004-6-17 15:22:35

求助!模块安装问题?

:twisted:
出错信息:./scull.o was compiled for kernel version 2.4.20
while this kernel is version 2.4.20-8

我知道是版本控制问题,从新编译了不带版本控制功能的内核
请各,还是不行?why?
那位大虾帮忙解释一下!!!

_z_ 发表于 2004-6-17 17:41:25

insmod -f xxx

or

modify the version NO. in the source code

lining_li 发表于 2004-6-17 23:24:15

重编译内核为不支持版本控制还是没用哈!!

Dragonfly 发表于 2004-6-18 03:06:25

which kernel u are using? which kernel u compiled?

lining_li 发表于 2004-6-18 12:51:02

我使用的内核是2.4.20-8
但我把版本控制关了再编译它,,还是不行!

ttjswdy 发表于 2004-6-24 20:26:11

你是不是用的red hat linux9?我在学习《linux设备驱动程序》时,也遇到过类似问题,我的理解和解决方法是这样的,希望对你能有帮助:
一开始我编译那本书提供的例子时,插入模块也是出现和你一样的警告,说模块版本和内核版本不匹配,我觉得所谓的版本不匹配,应该指的是你所用的内核头文件的版本应该和你所用的操作系统内核匹配。我发现我的red hat9里的/usr/src/下并没有linux内核的源码,这种情况下你所需要的应用于内核编程的头文件默认的目录其实是/usr/include/linux,而不是/usr/src/linux-2.4.20-8/include/linux/。事实上/usr/incude/linux/里的头文件的版本是2.4.20而不是2.4.20-8,我想这应该是出警告的原因。
解决办法是下载linux-2.4.20-8的内核源码,放到/usr/src目录下(如果你的/usr/src/下已经有了linux-2.4.20-8的内核源码的话,前面一步就可以省了),然后编译内核模块时加上编译选项“-I/usr/src/linux-2.4.20-8/include/”,这样你编译器会优先到正宗的2.4.20-8版本源码的include目录下寻找头文件,所以你的模块版本就是2.4.20-8了。

呵呵,语文不好,罗里罗唆说了一大堆,不知道能不能帮上你,有什么问题再商讨吧。

ttjswdy 发表于 2004-6-24 20:34:40

对了,如果你直接用那本书提供的示例的makefile进行编译,要注意rules.make规则里要检查源码文件里是否有.config文件,如果检查不到可能会出错,或还是引用/usr/include/下的头文件,建议你最好把那句话注释掉或忽略错误。
页: [1]
查看完整版本: 求助!模块安装问题?