QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1636|回复: 6

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

[复制链接]
发表于 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.

请问各位大虾,怎么解决这问题啊!!!!!!
发表于 2005-1-29 13:39:42 | 显示全部楼层
有没有现成的module文件对比一下。
我在module.h中看到了这两个函数,不知道怎么用
extern int init_module(void);
extern void cleanup_module(void);
另外你用什么编译器,会不会是版本的问题
回复

使用道具 举报

发表于 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替换成你自己的文件名就可以.
回复

使用道具 举报

发表于 2005-3-6 00:23:39 | 显示全部楼层
把linux/version.h里面的版本号改为2.4.20-8就好了,嘿嘿,这算不算解决方法?
回复

使用道具 举报

发表于 2005-3-8 21:32:35 | 显示全部楼层
2.6内核编译模块需要一棵编译好的源代码树。
回复

使用道具 举报

发表于 2005-3-16 11:15:46 | 显示全部楼层
我也遇到这个问题...晕

第一次内核编程
回复

使用道具 举报

发表于 2005-3-17 11:04:55 | 显示全部楼层
内核版本不同
用gcc -I 指定相匹配的内核目录
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 10:31 , Processed in 0.043600 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表