用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
谢谢!!!!!!!!!!!! 是不是程序写得不对啊,要怎么修改,大侠指教啊,谢谢~~~~~ 知道怎么解决了,“红帽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
怎么解决?????? 呵呵!
在源文件中加入MODULE_LICENCE("GPL")
ok ! 其实,有没有什么LICENCE根本不重要,只是警告而已
我用的是2.6.5的内核,用你上面的程序一样的程序(我也是想先简单看一下加载的过程),但根本就不能用insmod上去,是不是进入2.6.5以后加载的方式改变了? 把linux/version里面的版本号改成2.4.20就可以了。呵呵!我也遇到过这个问题。该了就好了 把linux/version里面的版本号改成2.4.20就可以了。呵呵!我也遇到过这个问题。该了就好了
这个linux/version具体在哪里啊?乱改了几个地方都没有解决。谢谢 试试insmod -f hello.o 我和楼主的问题一样,用 insmod -f hello.o 也不行!哪位有好的解决办法!! 我的也是这样.
rh9.2
编译驱动程序肯定要把环境配置好,怎么没有这方面的介绍?!
偶编译的时候还提示:warning: implicit declaration of function `printk'
这是怎么回事?
页:
[1]