高手帮忙! RedHat8.0中编译/安装module出错:版本不符!!(100分)

// redhat8, kernel 2.4.18, gcc 3.2
// test.c
#define MODULE
#include

 1<linux module.h="">   
 2int init_module()   
 3{   
 4return 0;   
 5}   
 6void cleanup_module()   
 7{   
 8}   
 9//   
10gcc -c test.c //no warnings   
11insmod test.o时的出错,大致意思是test.o compiled for kernel 2.4.9but current kernel version is 2.4.18   
12哪位高手知道为什么??   
13  
14\---------------------------------------------------------------   
15  
16你修改一下头文件就可以了:   
17/usr/include/linux/version.h中修改一个   
18#define GXXXXX_VERSION "2.4.9-19"之类的代码   
19里面只有几行,很容易找到的。   
20然后不用我说吧。把相应的"2.4.9-19"修改为"2.4.18-14"Red Linux 8.0)就可以了   
21重新编译。OK   
22  
23  
24\---------------------------------------------------------------   
25  
26这个我早就想到并试过了,结果另外一个error message代替了“版本不符”!   
27你自己试过没有?行了吗?   
28\---------------------------------------------------------------   
29  
30楼上的没错,修改后确实会看上去可以insmod,你也可以查看到,但是我觉得其实这并没有解决问题。当时我的在   
31int init_module()   
32{ printk(“&lt;1&gt;this is module speaking”);   
33return 0;   
34}   
35但是insmod后并没有任何消息   
36\---------------------------------------------------------------   
37  
38OK,搞定了。   
39对于版本不符问题,只改头文件不行,insmod时还是会有warning出来,其实只要将include/linux改到(ln -s)正确的内核源代码头或下载相符的kernel srckernel headers就行了。   
40至于printk()没反应,由于OSbuffer机制,这也是有可能发生的,但这并不代表moduleload进来,建议netboylgl(echo) 使用其它的内核函数作测试,如在当前目录下建个文件等。</linux>
Published At
Categories with 服务器类
Tagged with
comments powered by Disqus