so 加载符号找不到的问题解决

WARNING: Could not load test.so: Cannot load library: reloc_library[1312]:  1332 cannot locate '__aeabi_f2uiz'...
这个问题是gcc的编译问题,需要把gcc.a打进去即可,但是解决问题的过程很重要,在这里记录下:
遇到这种情况就在so所在的目录查看是否有这个符号
objdump -tT test .so | grep __aeabi_f2uiz 
通过查看,确实是不存在的。
 
然后查看该test.so的依赖库是否有 
在symbols/system/lib/的目录,该目录是带详细debug符号信息的so,查看相关信息
首先查看该test.so的依赖库
objdump -x test.so | grep NEED
NEEDED libtest2.so
NEEDED libtest3.so
接着通过
nm libtest2.so| grep __aeabi_f2uiz
确认这个符号属于哪个so
通过确认后,发现在这个符号有个地址 例如:0000010
通过 addr2line -f -e libtest2.so 0000010 查看具体的符号所在的代码
发现这个符号是gcc相关。
结合在网上搜集到的资料,确实是gcc导致的问题
最后在编译的临时静态目录里添加这个静态文件
新建libgcc文件夹,将gcc.a复制进去
out\target\product\generic\obj\STATIC_LIBRARIES\libgcc\gcc.a
最后修改mk文件
LOCAL_STATIC_LIBRARIES += libgcc

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值