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
原文地址:https://www.cnblogs.com/likwo/p/2650339.html