救命啊:小弟编了一个小模块,出现问题,求救啊!!!!!!!
最近学习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.
请问各位大虾,怎么解决这问题啊!!!!!! 有没有现成的module文件对比一下。
我在module.h中看到了这两个函数,不知道怎么用
extern int init_module(void);
extern void cleanup_module(void);
另外你用什么编译器,会不会是版本的问题 哦,这个问题应该是这样来解决的.
你应该先看看你的linux系统中/usr/src/目录下有几个文件夹,按照你的说法,应该有一个目录是/usr/src/linux2.4.20-8,如果是这样的话,你用如下命令来编译
在程序的当前目录下:
gcc -c test.c -I/usr/src/linux2.4.20-8/include 就可以了.将test.c替换成你自己的文件名就可以. 把linux/version.h里面的版本号改为2.4.20-8就好了,嘿嘿,这算不算解决方法? 2.6内核编译模块需要一棵编译好的源代码树。 我也遇到这个问题...晕
第一次内核编程 内核版本不同
用gcc -I 指定相匹配的内核目录
页:
[1]