LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 762|回复: 2

我的Hello World版本控制问题出错,该如何解决呢?

[复制链接]
发表于 2005-6-24 09:38:57 | 显示全部楼层 |阅读模式
--------------------------------------------------------------------------------


我写了一个Hello World模块,编译通过了,可是在加载时出现版本问题。说我编译的是基于2.4.20内核,而系统是用的2.4.20-8,我用的是红帽子9系统,这种问题该如何解决呢?
发表于 2005-6-24 10:35:08 | 显示全部楼层
这一般是因为你编译模块的时候使用的头文件不对,如果你不用
-I 指定你的头文件路径的话,那么gcc默认使用  
/usr/include/linux

/usr/include/asm
这里的头文件,module.h 里面包含一个叫 version.h 的东西
里面有
#define UTS_RELEASE "2.4.20"
#define LINUX_VERSION_CODE 132116
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
这样的版本信息,可能和当前内核不符。

解决的办法很明显了,要么用 -I 显示指定头文件路径(推荐)
也可以把 /usr/include/linux  /usr/include/asm 改成符号连接
指向  /usr/srr/'uname -r'/include 下面的 linux 和 asm-i386 目录
(一般是i386而已,看情况)

以上是针对2.4版本的kernel module,对于2.6的,因为其Makefile里面
都是 直接 -C 去使用内核的 module build的工具,所以应该没有这样的问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-24 11:50:34 | 显示全部楼层
谢谢大侠指点,我试试看,多谢了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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