zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    测试
    python制作
    Mysql 用法
    Day006 Java面向对象编程
    Day005 Java数组详解
    Day004 Java方法详解
    Day003 Java流程控制
    Day002 Java基础语法
    Day001 MrakDown语法 Dos命令
    4. 谈谈你对ArrayList和LinkedList 的理解
  • 原文地址:https://www.cnblogs.com/likwo/p/2650339.html
Copyright © 2011-2022 走看看