swoderheart 发表于 2005-4-18 17:36:36

用INSMOD加载驱动版本不匹配怎么解决?????

刚开始学习写驱动程序      
//=========hello.c      
#define    MODULE      
#include<linux/module.h>      
int    init_module(void)      
{      
                     printk("<1>hello\n");      
                     return    0;      
}      
   
void    cleanup_module(void)      
{      
             printk("<1>goodbye\n");      
}      
   
编译如下:      
gcc    -c    hello.c      
加载:      
insmod    hello.o      
就不行了,提示信息好像是说version    mismatch,然后说编译出的版本是2.4.20(好像是,记不清了),KERNEL版本是2.4.20-8,云云……      
   
怎么解决这个版本不匹配问题?      
   
PS:我的是RED    Hat    LINUX    9.0      
谢谢!!!!!!!!!!!!

swoderheart 发表于 2005-4-18 17:48:52

是不是程序写得不对啊,要怎么修改,大侠指教啊,谢谢~~~~~

swoderheart 发表于 2005-4-18 18:21:17

知道怎么解决了,“红帽9下编译内核模块可以使用命令gcc -c module.c -I/usr/src/linux-2.4.20-8/include,就不会有版本提示的问题了。”

可是这样解决之后又出现了warning,说什么no licence,然后可以see :http://www.tux.org/lkml/#export-tained

怎么解决??????

donting 发表于 2005-6-22 23:51:08

呵呵!
在源文件中加入MODULE_LICENCE("GPL")
ok !

rh_linux 发表于 2005-6-26 13:17:27

其实,有没有什么LICENCE根本不重要,只是警告而已
我用的是2.6.5的内核,用你上面的程序一样的程序(我也是想先简单看一下加载的过程),但根本就不能用insmod上去,是不是进入2.6.5以后加载的方式改变了?

NeptuneStar 发表于 2005-7-15 12:42:40

把linux/version里面的版本号改成2.4.20就可以了。呵呵!我也遇到过这个问题。该了就好了

langzi2003 发表于 2005-8-2 16:58:26

把linux/version里面的版本号改成2.4.20就可以了。呵呵!我也遇到过这个问题。该了就好了

这个linux/version具体在哪里啊?乱改了几个地方都没有解决。谢谢

jackshao 发表于 2005-8-3 22:52:22

试试insmod -f hello.o

chengchet 发表于 2005-8-4 10:26:58

我和楼主的问题一样,用 insmod -f hello.o 也不行!哪位有好的解决办法!!

good02xaut 发表于 2005-8-5 17:45:50

我的也是这样.
rh9.2
编译驱动程序肯定要把环境配置好,怎么没有这方面的介绍?!

偶编译的时候还提示:warning: implicit declaration of function `printk'
这是怎么回事?
页: [1]
查看完整版本: 用INSMOD加载驱动版本不匹配怎么解决?????