LinuxSir.cn,穿越时空的Linuxsir!

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

[求助]交叉编译hello模块的问题

[复制链接]
发表于 2008-3-29 15:48:10 | 显示全部楼层 |阅读模式
·初学arm,用的QQ2440开发板。交叉编译环境都已经设定好,在/opt/qq2440/kernel-2.6.13/Makefile里已经指定ARCH=arm, CROSS_COMPILE=arm-linux
·一个经典的hello.c模块程序,一个makefile。其中,makefile内容如下:
obj-m := hello.o
·运行以下命令进行交叉编译:
make -C /opt/qq2440/kernel-2.6.13/ M=$PWD modules
可以成功生成hello.ko文件

·但是!
下载到目标板,insmod hello.ko时,出现如下问题!
insmod: kernel-module version mismatch
        hello.ko was compiled for kernel version
        while this kernel is version 2.6.13.
内核不匹配?我又专门用/opt/qq2440/kernel-2.6.13这个kernel重新编译了一遍操作系统,重新烧写了竟像文件,应该不会有内核不匹配问题吧?
那这是怎么回事呢?严重迷茫中,各路高手帮指点一下吧!多谢!
而且!
我google时,发现全是hello.ko was compiled for kernel version x.x.xx
明显是内核版本不匹配,可我这现象连版本号都没有显示?

·PS:
主机上运行
[root@localhost hello]# modinfo hello.ko
filename:       hello.ko
license:        Dual BSD/GPL
srcversion:     31FE72DA6A560C890FF9B3F
depends:
vermagic:       2.6.13 preempt ARMv4 gcc-3.4
开发板运行
[root@FriendlyARM plg]# uname -r
2.6.13

版本应该没问题啊!
 楼主| 发表于 2008-3-31 11:44:28 | 显示全部楼层
还没有达人帮助解决掉么...我继续等...
回复 支持 反对

使用道具 举报

发表于 2008-3-31 13:59:30 | 显示全部楼层
uname -a的结果是什么啊
觉得提示信息挺奇怪的,因为别的都是
hello.ko was compiled for kernel version x.x.xx
而你的却是
hello.ko was compiled for kernel version

是不是内核的版本信息没有编译进去?我不清楚这是什么原因,只是胡乱猜测,内核和模块用的头文件确定是一致的么,是不是改过内核某处的代码导致了这个问题?
回复 支持 反对

使用道具 举报

发表于 2008-3-31 14:10:09 | 显示全部楼层

看反了

google了一下,可以在makefile里加入下面这句试一下:
KVERSION = $(shell uname -r)

原文在这里:
http://www.cyberciti.biz/tips/compiling-linux-kernel-module.html
你看看吧,因为我没有试过:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-1 20:11:53 | 显示全部楼层
谢谢楼上的关心,已经找到原因了,是busybox配置时没有选择支持2.6内核。真奇怪他们自带光盘的所有文件系统都不支持2.6模块的insmod,但是板子的系统却是2.6内核的.
回复 支持 反对

使用道具 举报

发表于 2008-4-2 09:52:02 | 显示全部楼层
原来busybox还有这样一个配置,受益了,呵呵
回复 支持 反对

使用道具 举报

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

本版积分规则

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