piaopiaoyu 发表于 2005-1-17 02:24:47

救命啊:小弟编了一个小模块,出现问题,求救啊!!!!!!!

最近学习linux,自己写料一个小模块,代码如下:
#ifndef __KERNEL__
# define __KERNEL__
#endif
#ifndef MODULE
# define MODULE
#endif
#include <linux/config.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");
#ifdef CONFIG_SMP
#define __SMP__
#endif
#define __NO_VERSION__
#include <linux/version.h>
#include <linux/kernel.h>
char kernel_version[]=UTS_RELEASE;
static int init_module()
{
printk("Hello World!\n");
return 0;
}
static void cleanup_module()
{
printk("Bye!\n");
}
编译没有出错,但是用insmod命令挂进内核是,出现问题:说内核-模块版本不匹配,模块适合2.4.20的版本,但是系统内核版本是2.4.20-8.

请问各位大虾,怎么解决这问题啊!!!!!!

yg_sun 发表于 2005-1-29 13:39:42

有没有现成的module文件对比一下。
我在module.h中看到了这两个函数,不知道怎么用
extern int init_module(void);
extern void cleanup_module(void);
另外你用什么编译器,会不会是版本的问题

flyhappy007 发表于 2005-3-1 09:25:17

哦,这个问题应该是这样来解决的.
你应该先看看你的linux系统中/usr/src/目录下有几个文件夹,按照你的说法,应该有一个目录是/usr/src/linux2.4.20-8,如果是这样的话,你用如下命令来编译
在程序的当前目录下:
gcc -c test.c -I/usr/src/linux2.4.20-8/include 就可以了.将test.c替换成你自己的文件名就可以.

turingcat 发表于 2005-3-6 00:23:39

把linux/version.h里面的版本号改为2.4.20-8就好了,嘿嘿,这算不算解决方法?

archerzz 发表于 2005-3-8 21:32:35

2.6内核编译模块需要一棵编译好的源代码树。

belove 发表于 2005-3-16 11:15:46

我也遇到这个问题...晕

第一次内核编程

xw009 发表于 2005-3-17 11:04:55

内核版本不同
用gcc -I 指定相匹配的内核目录
页: [1]
查看完整版本: 救命啊:小弟编了一个小模块,出现问题,求救啊!!!!!!!