invalid module format (-1):Exec format error
是这样的,ko是在开发环境ubuntu804上面make的,内核是2.6.24.16目标环境内核版本是2.6.29.1,因此我在804建了对应的2.6.29.1的源码树,可惜还素不行!出现这个问题~
泪奔跪求!都是x86~
回复 #1 lxyscls 的帖子
编译环境和目标环境要一致才行 原帖由 dreamice 于 2009-11-16 15:07 发表 http://linux.chinaunix.net/bbs/images/common/back.gif编译环境和目标环境要一致才行
今天下午看到了,晚上就遇到了
重新编译内核,以前的模块加载出现了同样的问题
体验到了
学习了
回复 #3 openspace 的帖子
主要原因还是Linux个内核版本之间差异比较大回复 #4 dreamice 的帖子
貌似有个vermagic.o它应该类似于签名之类的
不知道是不是这个原因
回复 #5 openspace 的帖子
不是这个原因,内核版本变化,导致很多内核函数接口都变化了回复 #6 dreamice 的帖子
内核接口变化是主因但是要是内核接口不变,而make时要快速检测的话,vermagic.o应该是个捷径吧
不改内核也不改配置后编译新内核(只是时间上讲新一些),再加载模块是否会出现这个问题
回复 #7 openspace 的帖子
时间上新一点,没有关系,现在内核小版本之间,很多实现以及函数都变化了,vermagic应该是个检查的捷径,但不是最终导致版本之间内核模块不兼容的主要原因。 原帖由 dreamice 于 2009-11-17 10:39 发表 http://linux.chinaunix.net/bbs/images/common/back.gif时间上新一点,没有关系,现在内核小版本之间,很多实现以及函数都变化了,vermagic应该是个检查的捷径,但不是最终导致版本之间内核模块不兼容的主要原因。
刚重新编译了内核试了一下
没有Error
学习了 刚有个想法,以为会根据整个内核的代码做一个签名
就偷偷在main.c里面加了空行,重新编译后照样正常加载模块:mrgreen:
所以考虑module的实现上可能会有一些操作
转去看module实现了
页:
[1]
2