您的位置:首页 > 移动开发 > Android开发

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纠结。。。
记下来 作备忘。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: