当前位置: 技术问答>linux和unix
一个疑问,源自《linux驱动程序》中文版 第二章(一个只有四行的程序)
来源: 互联网 发布时间:2015-06-16
本文导语: hello。c : #define MODULE #include int init_module(void) {printk("Hello,worldn");return 0;} void cleanup_module(void) {printk("Goodbye cruel worldn");} 我按照书中所说使用 #gcc -c hello.c #insmod hello.o hello.o: kernel-module version mismatch ...
hello。c :
#define MODULE
#include
int init_module(void) {printk("Hello,worldn");return 0;}
void cleanup_module(void) {printk("Goodbye cruel worldn");}
我按照书中所说使用
#gcc -c hello.c
#insmod hello.o
hello.o: kernel-module version mismatch
hello.o was compiled for kernel version 2.4.9-34
while this kernel is version 2.4.20-8.
我使用的编译器是gcc3.2.2 20030222
操作系统是:Redhat Linux 9.1
请问我怎么能更正这个错误(我试着指定版本好.但还是有错误,强行加载可以成功但没有预期的显示,并且rmmod不掉)
#define MODULE
#include
int init_module(void) {printk("Hello,worldn");return 0;}
void cleanup_module(void) {printk("Goodbye cruel worldn");}
我按照书中所说使用
#gcc -c hello.c
#insmod hello.o
hello.o: kernel-module version mismatch
hello.o was compiled for kernel version 2.4.9-34
while this kernel is version 2.4.20-8.
我使用的编译器是gcc3.2.2 20030222
操作系统是:Redhat Linux 9.1
请问我怎么能更正这个错误(我试着指定版本好.但还是有错误,强行加载可以成功但没有预期的显示,并且rmmod不掉)
|
问题是你编译用的核心头文件和运行核心版本不一致造成的。
请 把 /usr/include/linux 和 /usr/include/asm 两个目录指向系统运行核心版本的源码中的 linux-2.4.20-8/include/linux 和 linux-2.4.20-8/include/asm 就可以了。
请 把 /usr/include/linux 和 /usr/include/asm 两个目录指向系统运行核心版本的源码中的 linux-2.4.20-8/include/linux 和 linux-2.4.20-8/include/asm 就可以了。
|
To chenhongbo(小牛,会长大的...) :
要你自己编译的内核来启动系统,然后再加载hello.o就ok了
注意:一定要用自己编译的内核来启动系统,不要使用安装时的内核
还有一个方法就是修改版本信息了,这个方法我没有试过,不过应该可以的
要你自己编译的内核来启动系统,然后再加载hello.o就ok了
注意:一定要用自己编译的内核来启动系统,不要使用安装时的内核
还有一个方法就是修改版本信息了,这个方法我没有试过,不过应该可以的
|
insmod -f hello.o
|
问题是你编译用的核心头文件和运行核心版本不一致造成的。
请 把 /usr/include/linux 和 /usr/include/asm 两个目录指向系统运行核心版本的源码中的 linux-2.4.20-8/include/linux 和 linux-2.4.20-8/include/asm 就可以了。
请 把 /usr/include/linux 和 /usr/include/asm 两个目录指向系统运行核心版本的源码中的 linux-2.4.20-8/include/linux 和 linux-2.4.20-8/include/asm 就可以了。
|
hehe,这应该是每个新手第一次编译时必问的问题了
|
又一个新手即将成长,高兴呀,版本问题
|
我也正在看那本书,正碰到一样的问题,呵呵
不过,恼火的是,我刚自己编译过内核,结果我的提示是:
./hello.o: kernel-module version mismatch
./hello.o was compiled for kernel version 2.4.18-14custom
while this kernel is version 2.4.18-14.
不过,恼火的是,我刚自己编译过内核,结果我的提示是:
./hello.o: kernel-module version mismatch
./hello.o was compiled for kernel version 2.4.18-14custom
while this kernel is version 2.4.18-14.