当前位置: 技术问答>linux和unix
问个比较基础的问题 书上的一段demo ,编译不过呀
来源: 互联网 发布时间:2016-03-11
本文导语: #define MODULE #include int init_module(void){ printk("Hello,world n"); return 0; } vo...
#define MODULE
#include
int init_module(void){
printk("Hello,world n");
return 0;
}
void cleanup_module(void){
printk("Goodbye cruel world n");
}
上面的代码编译出了问题咯,如下:
[root@localhost sin]# gcc -c hello.c
In file included from hello.c:2:
/usr/include/linux/module.h:281: called object is not a function
出上面的提示:是在我修改了 /usr/include/linux/version.h 里的 2.4.20 为 2.4.20-8 后才出了上面的提示
但不修改 20 为 20-8, gcc -c hello.c 没问题,, 但 在 insmod ./hello.o 有问题
./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.
该怎么弄呢?
#include
int init_module(void){
printk("Hello,world n");
return 0;
}
void cleanup_module(void){
printk("Goodbye cruel world n");
}
上面的代码编译出了问题咯,如下:
[root@localhost sin]# gcc -c hello.c
In file included from hello.c:2:
/usr/include/linux/module.h:281: called object is not a function
出上面的提示:是在我修改了 /usr/include/linux/version.h 里的 2.4.20 为 2.4.20-8 后才出了上面的提示
但不修改 20 为 20-8, gcc -c hello.c 没问题,, 但 在 insmod ./hello.o 有问题
./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.
该怎么弄呢?
|
首先gcc的参数不对,应该gcc -D__KERNEL__ -DMODULE -c hello.c -I/xxxx/xxxx/xxx
其次内核树不是你想的那样,参考
http://topic.csdn.net/u/20070516/15/648fa361-0763-42c7-ad4c-b5fa55c245cd.html
其次内核树不是你想的那样,参考
http://topic.csdn.net/u/20070516/15/648fa361-0763-42c7-ad4c-b5fa55c245cd.html
|
编译内核模块需要-I 内核源码树,还需要-D__KERNREL
|
gcc -o hello -c hello.c
|
估计编译环境的不支持吧。
你重新改回去看看。
你重新改回去看看。