免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9980 | 回复: 8
打印 上一主题 下一主题

“Invalid module format”错误求教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-14 22:15 |只看该作者 |倒序浏览
简单的开始:
#include <linux/module.h>;  /* Needed by all modules */
#include <linux/kernel.h>;  /* Needed for KERN_ALERT */
#include <linux/init.h>;


static int LL_init_module(void)
{
   printk("<1>;Hello world 1.\n";
   return 0;
}


static void LL_cleanup_module(void)
{
  printk("<1>;Goodbye world 1.\n";
}

module_init(LL_init_module);
module_exit(LL_cleanup_module);

Makefile:
TARGET  = hello-1
WARN    = -W -Wall -Wstrict-prototypes -Wmissing-prototypes
INCLUDE = -isystem /lib/modules/`uname -r`/build/include
CFLAGS  = -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE}
CC      = gcc

all     {TARGET}.o

${TARGET}.o: ${TARGET}.c
        $(CC) $(WARN) $(INCLUDE) $(CFLAGS) -c -o $@ $<

clean   :
        rm -rf *.o

make之后,得到hello-1.o这个模块。然后:insmod hello-1.o的结果就:
insmod: error inserting './hello-1.o': -1 Invalid module format

奇怪啊。。。不懂了。
我的系统是FC4.内核是:Linux fav 2.6.11-1.1369_FC4 #1 Thu Jun 2 22:55:56 EDT 2005 i686 athlon i386 GNU/Linux

请教了...............

论坛徽章:
5
2 [报告]
发表于 2005-08-15 10:37 |只看该作者

“Invalid module format”错误求教

请先build kernel

论坛徽章:
0
3 [报告]
发表于 2005-08-15 11:08 |只看该作者

“Invalid module format”错误求教

搞定了。

和build kernel无关,呵呵。

anyway,thx a lot,thx all.

论坛徽章:
0
4 [报告]
发表于 2005-08-15 14:33 |只看该作者

“Invalid module format”错误求教

我跟著你的方法試了, 但有錯誤, 我改了Makefile很多次, 但也是錯誤的. 若不經makefile, 直接編譯是可以的. 但和你一樣 "Invalid module format"


  1. [root@localhost root]# insmod hello_module.o
  2. insmod: error inserting 'hello_module.o': -1 Invalid module format

复制代码


請問你的解決方法是什麼...thx

论坛徽章:
0
5 [报告]
发表于 2005-08-15 19:33 |只看该作者

“Invalid module format”错误求教

检查
/lib/modules/KERNEL_VERSION
是否和你的mod一致

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2005-08-16 09:54 |只看该作者

“Invalid module format”错误求教

2.6 内核不能自己写 makefile 了吧?

论坛徽章:
0
7 [报告]
发表于 2005-08-16 13:02 |只看该作者

“Invalid module format”错误求教

2.6内核的编译跟2.4是有区别的

用下面的方法编译就可以了
#echo "obj-m :=hello.o" >; Makefile
#make -C /usr/src/kernels/2.6.9-2.EL.i686/ M=`pwd` modules

论坛徽章:
0
8 [报告]
发表于 2006-03-30 10:40 |只看该作者
请问楼主是怎样解决的吗?

论坛徽章:
0
9 [报告]
发表于 2006-03-30 13:41 |只看该作者
2.6内核的模块后缀名为ko而不是o.
richardhesidu的方法应该是可以的.我早上试过了.
2.6内核的模块可以自己写Makefile,注意不是makefile.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP