编译的内核加载驱动,提示failed (Exec format error)
2013-11-28 22:13
796 查看
我用的是xt800,由于要使用insmod这些命令,所以首先就是获得手机的root权限(adb shell获得root权限)
我看了手机,我的内核是2.6.29-omap1,我就上linux上面去下了一个这个内核。然后是配置,如果这几项不
配置直接将hello.ko加载上去会出现的错误是insmod: init_module '/data/hello1.ko' failed (Exec format error),
用dmesg看发现使版本不一样,我的要求的是2.6.29-omap1 preempt mod_unload ARMv7,所以在配置的时候主要就是
要改一下 preempt mod_unload ARMv7,我用的使make menuconfig配置的,选择system type,然后选择
arm ltd integrator family ,然后把后面有个support arm v7 processor的选上,在kernel feature上把preempt
选上,把enable loadable module support选上,然后进入选择module unloading,这样在make写的hello模块
就能通过刚才的问题了,但是这时候加载上去会出现mcount(或者__gnu_mcount_nc)unknown symbol,这个使
手机使发行的版本没有调式的符号,所以你编译的时候也不要引人用于调试的信息,我在重新make menuconfig源码,
把所有关于调式的信息都给关了,这个错误也通过了。这时候能够正常加载和卸载hello模块了,但是发现没有运行。
比如里面的printk没有打印任何信息,开始以为使printk在哪里搞错了,但是一直没有找到相关的问题。后面我下载了
android的2.6.29的内核下来,由于这个不是omap1的,所以在版本的位置改了一下(好像说可以去掉版本检查在加载
模块的时候,但是我不知道,所以就改了以下)然后再像上面说的那样做了一遍,再用dmesg时,看到了hello world
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
static int __init hello_init(void)
{
printk("<0>Hello, world\n");
return 0;
}
static void __exit hello_exit(void)
{
printk("<0>Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
我看了手机,我的内核是2.6.29-omap1,我就上linux上面去下了一个这个内核。然后是配置,如果这几项不
配置直接将hello.ko加载上去会出现的错误是insmod: init_module '/data/hello1.ko' failed (Exec format error),
用dmesg看发现使版本不一样,我的要求的是2.6.29-omap1 preempt mod_unload ARMv7,所以在配置的时候主要就是
要改一下 preempt mod_unload ARMv7,我用的使make menuconfig配置的,选择system type,然后选择
arm ltd integrator family ,然后把后面有个support arm v7 processor的选上,在kernel feature上把preempt
选上,把enable loadable module support选上,然后进入选择module unloading,这样在make写的hello模块
就能通过刚才的问题了,但是这时候加载上去会出现mcount(或者__gnu_mcount_nc)unknown symbol,这个使
手机使发行的版本没有调式的符号,所以你编译的时候也不要引人用于调试的信息,我在重新make menuconfig源码,
把所有关于调式的信息都给关了,这个错误也通过了。这时候能够正常加载和卸载hello模块了,但是发现没有运行。
比如里面的printk没有打印任何信息,开始以为使printk在哪里搞错了,但是一直没有找到相关的问题。后面我下载了
android的2.6.29的内核下来,由于这个不是omap1的,所以在版本的位置改了一下(好像说可以去掉版本检查在加载
模块的时候,但是我不知道,所以就改了以下)然后再像上面说的那样做了一遍,再用dmesg时,看到了hello world
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
static int __init hello_init(void)
{
printk("<0>Hello, world\n");
return 0;
}
static void __exit hello_exit(void)
{
printk("<0>Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
相关文章推荐
- ok6410开发板android底层驱动模块编写,出现insmod:init_module ‘hello.ko’ failed (Exec format error)
- eclipse cocos 3.0 提示 Conversion to Dalvik format failed with error 1 改java 编译等级
- A31S android 手动加载摄像头命令,驱动编译进内核
- IntelliJ IDEA 编译错误,提示 Compilation failed: internal java compiler error或java compiler failed
- Android 错误提示:Conversion to Dalvik format failed with error 1 解决办法
- Android新编译的内核驱动模块不能被init加载原因解决
- iOS国际化编译错误:error: read failed: The data couldn’t be read because it isn’t in the correct format.
- insmod: init_module 'hello.ko' failed (Exec format error)
- apk打包和反编译三、有关 Conversion to Dalvik format failed with error 1
- 解决android模拟器无法启动 提示:Conversion to Dalvik format failed with error 1错误
- 编译出错提示 error trying to exec 'cc1': execvp: No such file or directory
- android-----模拟器加载自己编译的内核(适用于驱动练习)
- CentOS 5.9编译内核2.6.24提示Error: bad register name `%dil'
- 转:linux启动时对编译进内核驱动模块的加载
- 分析解决:XXX驱动已经被编译到缺省内核中,不能再使用insmod 方式加载
- [7]_编译内核错误提示2:recipe for target 'kernel/timeconst.h' failed 和 "mkimage" command not found - U-Boot
- Android 错误提示:Conversion to Dalvik format failed with error 1 解决办法
- 编译android内核和文件系统,已经安装jdk,提示build/core/config.mk:268: *** Error: could not find jdk tools.jar
- Conversion to Dalvik format failed with error 1【提示翻译】
- Oozie 编译提示oozie docs failed:maven-site-plugin,error parsing...