当前位置: 技术问答>linux和unix
insmod初级问题!
来源: 互联网 发布时间:2015-12-02
本文导语: hello.o: kernel-module version mismatch hello.o was compiled for kernel version 2.4.20 while this kernel is version 2.4.20-8. 这是我用insmod hello.o时给我的提示,应该是hello.o被2.4.20编译,而我的内核是2.4.20-8 我的问题是: 1. 两...
hello.o: kernel-module version mismatch
hello.o was compiled for kernel version 2.4.20
while this kernel is version 2.4.20-8.
这是我用insmod hello.o时给我的提示,应该是hello.o被2.4.20编译,而我的内核是2.4.20-8
我的问题是:
1. 两个版本不同,为什么不能将模块编译进去,问的菜别笑话我.....
2. 我的gcc编译出来的文件是2.4.20怎么变成2.4.20-8?
若解决问题的是命令,请详细的说一下,各个参数的意思,谢谢!:)
hello.o was compiled for kernel version 2.4.20
while this kernel is version 2.4.20-8.
这是我用insmod hello.o时给我的提示,应该是hello.o被2.4.20编译,而我的内核是2.4.20-8
我的问题是:
1. 两个版本不同,为什么不能将模块编译进去,问的菜别笑话我.....
2. 我的gcc编译出来的文件是2.4.20怎么变成2.4.20-8?
若解决问题的是命令,请详细的说一下,各个参数的意思,谢谢!:)
|
/usr/src/linux-2.4.20-8 目录是linux内核的源代码。
你系统内没有此目录,很可能是因为当初安装的时候没有选择安装内核源码选项。
所以,你应该先把内核源码装上。
可以从网上下载,放到/usr/src目录中,更好更方便的是使用RedHat的安装程序(需要系统安装光盘)
你系统内没有此目录,很可能是因为当初安装的时候没有选择安装内核源码选项。
所以,你应该先把内核源码装上。
可以从网上下载,放到/usr/src目录中,更好更方便的是使用RedHat的安装程序(需要系统安装光盘)
|
呵呵,这个问题已经问过好多遍了。如果没说错的话,你应该用的是红帽9
你可以如下编译:gcc -c netfilter.c -o netfilter -I/usr/src/linux-2.4.20-8/include
将netfilter.c与 netfilter替换掉即可。
这是在2.4系列内核下的编译过程。
如果是在2.6系列内核下,需要编写Makefile文件才行。具体可以参考ldd 3rd
上面的方法应该能够解决了。好运
你可以如下编译:gcc -c netfilter.c -o netfilter -I/usr/src/linux-2.4.20-8/include
将netfilter.c与 netfilter替换掉即可。
这是在2.4系列内核下的编译过程。
如果是在2.6系列内核下,需要编写Makefile文件才行。具体可以参考ldd 3rd
上面的方法应该能够解决了。好运
|
不知道还要怎么说,才算清楚。
去下个2.4.20-8版本的内核,来编译。
去下个2.4.20-8版本的内核,来编译。