HONGLIN
驱动牛犊
驱动牛犊
  • 注册日期2002-04-04
  • 最后登录2010-03-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望12点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1652回复:5

初学提问,菜鸟编译hello问题,请高手点拔

楼主#
更多 发布于:2004-04-08 11:19
照操很简单的
#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");
}


我用gcc -c hello.c 编译,但是 insmod 提示
couldn't find the kernel version the module was compiled for

版本不对,我用的rh9 2.4.20-8 ,我改怎么指定编译版本呢?
不再困惑
HONGLIN
驱动牛犊
驱动牛犊
  • 注册日期2002-04-04
  • 最后登录2010-03-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望12点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-08 11:24
再补充一下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.
不再困惑
trureno
驱动牛犊
驱动牛犊
  • 注册日期2002-12-04
  • 最后登录2005-03-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-08 15:05
这个问题我也碰到,用LINUX设备驱动程序(2nd)的例子也不行,该怎么办
martinchang
驱动牛犊
驱动牛犊
  • 注册日期2004-03-23
  • 最后登录2004-10-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-08 15:25
我也遇到的这个问题,希望哪位大侠帮帮忙。

不胜感激!!
terrace
驱动牛犊
驱动牛犊
  • 注册日期2004-02-11
  • 最后登录2005-12-04
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-09 15:15
1.程序的头文件及预定义:
#MODULE
#__KERNEL__
#include<linux/kernel.h>
#include<linux/module.h>


2.编译命令有问题,应用:
gcc -c filename.c -I /usr/src/linux/include
其中,linux为内核文件的符号连接,在我的机器上为linux-2.4.20-8.

最后用dmesg命令就可以看到显示信息。
另外,编译时会出现一个warning,说要什么授权之类的,
你在程序最后加上一句:
MODULE_LICENSE("GPL");
就可。

呵呵,我初学时也遇到这个问题,可是很多人都不屑回答,我费了老大劲才高明白的!
trureno
驱动牛犊
驱动牛犊
  • 注册日期2002-12-04
  • 最后登录2005-03-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-04-10 15:29
谢谢楼上
游客

返回顶部