QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1200|回复: 5

请教,linux的驱动模块的问题!

[复制链接]
发表于 2004-6-18 22:25:43 | 显示全部楼层 |阅读模式
我按照《linux设备驱动程序》这本书的第一个程序写的!但是不行,请教各位大大,应该怎么办阿!
我的程序:
#define MODULE
#include <linux/module.h>

int init_module(void)
{
        printk("<1>Hello World!\n");
        return 0;
}

void cleanup_module(void)
{
        printk("<1>Goodbye cruel world!\n");
}

我编译时的,警告:
[root@Linux module]# gcc -Wall -c module.c
module.c: In function `init_module':
module.c:6: warning: implicit declaration of function `printk'

我加载模块时的,错误:
[root@Linux module]# insmod module.o
module.o: kernel-module version mismatch
        module.o was compiled for kernel version 2.4.20
        while this kernel is version 2.4.20-8.

我用的是red hat 9.0。
谢谢!
发表于 2004-6-18 23:12:58 | 显示全部楼层
#define __KERNEL__

or

gcc -Wall -c -D__KERNEL__ module.c


insmod -f module.o

or

modify the version number
回复

使用道具 举报

发表于 2004-6-19 03:02:48 | 显示全部楼层
search here and find a hello world example.
回复

使用道具 举报

 楼主| 发表于 2004-6-19 11:17:42 | 显示全部楼层
各位大大,编译时还有警告:
[root@Linux module]# gcc -Wall -c -D__KERNEL__ module.c
module.c: In function `init_module':
module.c:6: warning: implicit declaration of function `printk'
加载模块的时候,还有:
[root@Linux module]# insmod -f module.o
insmod: a module named module already exists
请教,这是什么问题啊?怎么解决!谢谢!
回复

使用道具 举报

发表于 2004-7-11 22:30:29 | 显示全部楼层
你需要指定内核源代码的路径。
回复

使用道具 举报

发表于 2004-7-12 17:43:59 | 显示全部楼层
你是不是用的red hat linux9?我在学习《linux设备驱动程序》时,也遇到过类似问题,我的理解和解决方法是这样的,希望对你能有帮助:
一开始我编译那本书提供的例子时,插入模块也是出现和你一样的警告,说模块版本和内核版本不匹配,我觉得所谓的版本不匹配,应该指的是你所用的内核头文件的版本应该和你所用的操作系统内核匹配。我发现我的red hat9里的/usr/src/下并没有linux内核的源码,这种情况下你所需要的应用于内核编程的头文件默认的目录其实是/usr/include/linux,而不是/usr/src/linux-2.4.20-8/include/linux/。事实上/usr/incude/linux/里的头文件的版本是2.4.20而不是2.4.20-8,我想这应该是出警告的原因。
解决办法是下载linux-2.4.20-8的内核源码,放到/usr/src目录下(如果你的/usr/src/下已经有了linux-2.4.20-8的内核源码的话,前面一步就可以省了),然后编译内核模块时加上编译选项“-I/usr/src/linux-2.4.20-8/include/”,这样你编译器会优先到正宗的2.4.20-8版本源码的include目录下寻找头文件,所以你的模块版本就是2.4.20-8了。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-16 08:54 , Processed in 0.055798 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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