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

xiaoxiao2021-02-28  89

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.6miu.com/read-43930.html

最新回复(0)