Android驱动调试imsmod 驱动出错

yangkunhenry 2010-09-29 10:46:08
在真机上加载自己的驱动比如说hello.o.结果

insmod: init_module '/data/hello.o' failed (Exec format error)




D:\AppAndroid\android-sdk-windows-1.5_r3\tools>adb shell insmod /data/hello.o
insmod: init_module '/data/hello.o' failed (Exec format error)
...全文
3400 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
kernel version 问题
colwer 2013-05-26
  • 打赏
  • 举报
回复
也遇到了同样的问题
all8023 2013-03-15
  • 打赏
  • 举报
回复
引用 14 楼 wangben50 的回复:
引用 13 楼 all8023 的回复:引用 12 楼 wangben50 的回复: 解决了吗 ?我也在弄啊? 板子中运行的linux内核应该与你编译驱动模块时加载的内核树的版本完全一致,可以试试 可以了
以前做纯linux开发,insmod驱动的时候就是驱动和内核必须在同一版本环境编译,否则加载不上,如果android驱动的加载方法和linux一样的话,应该差不多,我看网上有人说两者加载驱动是一样的,正在弄android驱动的开发,正在尝试。
all8023 2013-03-14
  • 打赏
  • 举报
回复
引用 12 楼 wangben50 的回复:
解决了吗 ?我也在弄啊?
板子中运行的linux内核应该与你编译驱动模块时加载的内核树的版本完全一致,可以试试
wangben50 2013-03-14
  • 打赏
  • 举报
回复
引用 13 楼 all8023 的回复:
引用 12 楼 wangben50 的回复: 解决了吗 ?我也在弄啊? 板子中运行的linux内核应该与你编译驱动模块时加载的内核树的版本完全一致,可以试试
可以了
wangben50 2013-03-09
  • 打赏
  • 举报
回复
解决了吗 ?我也在弄啊?
fdl19881 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

LZ现在问题解决了么?
我也编译了个android驱动,在android真机上加载时也报这个错误:
insmod: init_module 'hello.ko' failed (Exec format error)
在模拟器上加载时报:
insmod: init_module 'hello.ko' failed (Function not implemented)
很是苦恼啊,光搭环境……
[/Quote]
我用我的机也试了下,编译的一个netfilter的whoVisit的例子,也出现这样的错误。
android应该是支持加载.ko文件的。因为wireless tether这个软件都使用了脚本insmod 加载手机自带的.ko模块的。
请问楼上的各位解决了没有呀? 还有我使用的是arm交叉编译链的工具。
xiaoelem 2010-12-25
  • 打赏
  • 举报
回复
LZ现在问题解决了么?
我也编译了个android驱动,在android真机上加载时也报这个错误:
insmod: init_module 'hello.ko' failed (Exec format error)
在模拟器上加载时报:
insmod: init_module 'hello.ko' failed (Function not implemented)
很是苦恼啊,光搭环境就花了好长时间,网上的资料也不多
有的说,android虚拟机默认不支持动态加载模块
yangkunhenry 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tankdin 的回复:]
我说的不是你的软件版本不对。
比如说,如果你要在ARM架构的芯片里运行这个模块,却用了X86架构的编译器,就会出现这种错误。
编译器必须是针对特定硬件平台的。
你应该知道交叉编译器这个概念吧?
[/Quote]
哦,有可能是我交叉编译前配置不对!谢谢!!!!!!
yangkunhenry 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jxxx2967 的回复:]
模块名一般不都是 .so 吗?
[/Quote]
.ko 是Linux 2.6内核使用的动态连接文件的后缀名,也就是模块文件,用来在Linux系统启动时加载内核模块
.o 是目标文件,相当于windows中的.obj文件
.so 为共享库,是shared object,用于动态连接的,和dll差不多

更在一下,上面编译模块的时候出了点问题,应该是hello.ko

insmod: init_module '/data/hello.ko' failed (Exec format error)

jxxx2967 2010-09-29
  • 打赏
  • 举报
回复
模块名一般不都是 .so 吗?
tankdin 2010-09-29
  • 打赏
  • 举报
回复
我说的不是你的软件版本不对。
比如说,如果你要在ARM架构的芯片里运行这个模块,却用了X86架构的编译器,就会出现这种错误。
编译器必须是针对特定硬件平台的。
你应该知道交叉编译器这个概念吧?
yangkunhenry 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tankdin 的回复:]
Exec format error
一般就是architecture不对
[/Quote]
architecture不对?
我看了我的手机的kernel 版本是2.6的,
而且我的hell.ko也是在内核为2.6的Android环境中make的,应该不是版本的问题把……
我搜了网上说的都说是版本不匹配的问题,可是我的……唉……再查查
tankdin 2010-09-29
  • 打赏
  • 举报
回复
你写的Makefile里也要调用编译器的啊。
一般这种错误就是因为你编译出来的目标文件与硬件架构不匹配。
yangkunhenry 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tankdin 的回复:]
用什么编译器的?
[/Quote]
写的Makefile,直接make的
tankdin 2010-09-29
  • 打赏
  • 举报
回复
Exec format error
一般就是architecture不对
tankdin 2010-09-29
  • 打赏
  • 举报
回复
用什么编译器的?

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧