|
发表于 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的工具,所以应该没有这样的问题 |
|