android ndk 编程 加载so文件时SIGILL
2011-04-02 16:05
411 查看
由于代码中使用了try catch等异常处理,本来想要改掉的,可是在ndk-r5下编译出来的时候,没有报错,
而且在htc的几款手机上,全都跑的好好的,一一切ok,就随它去了,没有理会。
结果有一天, 要在moto xt702(里程碑)上跑,却发现一加载我的动态库,程序就挂了。调式时发现报了SIGILL 非法指令。
反汇编中,看到是某个函数出错了,于是就把这个函数干掉,再调试,发现又错了, 不过转到其他函数上了,这样一个换一个,看来又错。
换成了r4去重新编译,发现在把o文件链接成so文件的时候有一堆错误, 网上查了支持才知道是lstdc++这个有问题,再参考了下面的文章:
http://wyj.zhuwo.info/2011/01/undefined-reference-to-__cxa_end_cleanup/ :以后,大致认为是在代码中使用了try catch等异常处理。
把代码中所有用到异常处理的地方 统统干掉,再编译一切ok, 加载进来跑, bingo!
mark:SIGSEGV 倒还容易找,可是出了这个SIGILL纠结。。。
记下来 作备忘。
而且在htc的几款手机上,全都跑的好好的,一一切ok,就随它去了,没有理会。
结果有一天, 要在moto xt702(里程碑)上跑,却发现一加载我的动态库,程序就挂了。调式时发现报了SIGILL 非法指令。
反汇编中,看到是某个函数出错了,于是就把这个函数干掉,再调试,发现又错了, 不过转到其他函数上了,这样一个换一个,看来又错。
换成了r4去重新编译,发现在把o文件链接成so文件的时候有一堆错误, 网上查了支持才知道是lstdc++这个有问题,再参考了下面的文章:
http://wyj.zhuwo.info/2011/01/undefined-reference-to-__cxa_end_cleanup/ :以后,大致认为是在代码中使用了try catch等异常处理。
把代码中所有用到异常处理的地方 统统干掉,再编译一切ok, 加载进来跑, bingo!
mark:SIGSEGV 倒还容易找,可是出了这个SIGILL纠结。。。
记下来 作备忘。
相关文章推荐
- Linux下So文件的加载(C语言编程)
- 关于加载android里 .so文件的问题
- Android NDK系列(一)-AS使用javah生成so文件
- 动态加载so库文件
- Android 从external storage加载so文件
- 编程基础-----c++与c调用so文件
- Linux中.a,.la,.o,.so文件的意义和编程实现
- Android studio中使用sqlcipher安卓7.0中.so文件加载失败问题。
- android ndk 加载so的策略
- 在 Android 系统中直接调用 SO文件(包含System.loadLibrary加载so的路径解释)
- Android Eclipse JNI 调用 .so文件加载问题
- linux中.a , .o , .so 文件的意义及编程实现
- 加载动态链接库文件.so 失败出错—— No such file or directory (没有文件或目录)问题处理
- Android 生成so文件加载时NoSuchMethodException
- ROS编程中如何配置CMakelists.txt来调用外部的动态链接库(.so文件)
- Android NDK生成so文件
- Linux中.a,.la,.o,.so文件的意义和编程实现
- Linux下动态加载SO文件
- android so文件加载连接简单理解
- Linux中.a,.la,.o,.so文件的意义和编程实现