Android下没有ldd可以使用,在进行ndk开发的时候,检查库的依赖项特别麻烦。有两个解决方案:

1、将linux的的ldd移植过去。因为android也是基于linux的,所以将ldd移植过去是完全可能的,google一下吧,这不是本文的重点;

2、现成的。ndk已经提供了工具,在ubuntu下执行locate readelf,你会发现有这些输出:

/mydroid/external/elfutils/src/readelf.c

/mydroid/prebuilt/darwin-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-readelf

/mydroid/prebuilt/darwin-x86/toolchain/arm-eabi-4.2.1/man/man1/arm-eabi-readelf.1

/mydroid/prebuilt/darwin-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi-readelf

/mydroid/prebuilt/darwin-x86/toolchain/arm-eabi-4.3.1/man/man1/arm-eabi-readelf.1

/mydroid/prebuilt/darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-readelf

/mydroid/prebuilt/darwin-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-readelf.1

/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-readelf

/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/man/man1/arm-eabi-readelf.1

/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi-readelf

/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/man/man1/arm-eabi-readelf.1

/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-readelf

/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/man/man1/arm-eabi-readelf.1

/mydroid/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu-readelf

/mydroid/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/man/man1/i686-unknown-linux-gnu-readelf.1

/mydroid/prebuilt/linux-x86/toolchain/sh-4.3.3/bin/sh-linux-gnu-readelf

/usr/android/android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/arm-eabi-readelf

/usr/android/android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/arm-eabi-readelf

/usr/bin/readelf

/usr/share/man/man1/readelf.1.gz

加粗的部分就是你可以使用的工具了。

测试一下:

当你完成android的编译后,测试如下:

root@dylan-ubuntu:/mydroid/out/target/product/generic/system/bin# /usr/android/android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/arm-eabi-readelf -d test_pvauthorengine

Dynamic section at offset 0x20b00 contains 26 entries:

Tag        Type                         Name/Value

0x00000001 (NEEDED)                     Shared library: [libopencore_author.so]

0x00000001 (NEEDED)                     Shared library: [libopencore_common.so]

0x00000001 (NEEDED)                     Shared library: [libdl.so]

0x00000001 (NEEDED)                     Shared library: [libc.so]

0x00000001 (NEEDED)                     Shared library: [libstdc++.so]

0x00000001 (NEEDED)                     Shared library: [libm.so]

0x00000020 (PREINIT_ARRAY)              0x28000

0x00000021 (PREINIT_ARRAYSZ)            0x8

0x00000019 (INIT_ARRAY)                 0x28008

0x0000001b (INIT_ARRAYSZ)               8 (bytes)

0x0000001a (FINI_ARRAY)                 0x28010

0x0000001c (FINI_ARRAYSZ)               8 (bytes)

0x00000004 (HASH)                       0x8108

0x00000005 (STRTAB)                     0x8fb0

0x00000006 (SYMTAB)                     0x85a0

0x0000000a (STRSZ)                      4570 (bytes)

0x0000000b (SYMENT)                     16 (bytes)

0x00000015 (DEBUG)                      0x0

0x00000003 (PLTGOT)                     0x28bf8

0x00000002 (PLTRELSZ)                   1144 (bytes)

0x00000014 (PLTREL)                     REL

0x00000017 (JMPREL)                     0xa19c

0x00000011 (REL)                        0xa18c

0x00000012 (RELSZ)                      16 (bytes)

0x00000013 (RELENT)                     8 (bytes)

0x00000000 (NULL)                       0x0

root@dylan-ubuntu:/mydroid/out/target/product/generic/obj/lib# /usr/android/android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/arm-eabi-readelf -d libopencore_common.so

Dynamic section at offset 0xcc448 contains 36 entries:

Tag        Type                         Name/Value

0x00000001 (NEEDED)                     Shared library: [libutils.so]

0x00000001 (NEEDED)                     Shared library: [libcutils.so]

0x00000001 (NEEDED)                     Shared library: [libui.so]

0x00000001 (NEEDED)                     Shared library: [libhardware.so]

0x00000001 (NEEDED)                     Shared library: [libandroid_runtime.so]

0x00000001 (NEEDED)                     Shared library: [libdrm1.so]

0x00000001 (NEEDED)                     Shared library: [libmedia.so]

0x00000001 (NEEDED)                     Shared library: [libskia.so]

0x00000001 (NEEDED)                     Shared library: [libvorbisidec.so]

0x00000001 (NEEDED)                     Shared library: [libsonivox.so]

0x00000001 (NEEDED)                     Shared library: [liblog.so]

0x00000001 (NEEDED)                     Shared library: [libicuuc.so]

0x00000001 (NEEDED)                     Shared library: [libcamera_client.so]

0x00000001 (NEEDED)                     Shared library: [libsurfaceflinger_client.so]

0x00000001 (NEEDED)                     Shared library: [libdl.so]

0x00000001 (NEEDED)                     Shared library: [libc.so]

0x00000001 (NEEDED)                     Shared library: [libstdc++.so]

0x00000001 (NEEDED)                     Shared library: [libm.so]

0x0000000e (SONAME)                     Library soname: [libopencore_common.so]

0x00000010 (SYMBOLIC)                   0x0

0x00000019 (INIT_ARRAY)                 0xc7000

0x0000001b (INIT_ARRAYSZ)               16 (bytes)

0x00000004 (HASH)                       0xb4

0x00000005 (STRTAB)                     0xc6fc

0x00000006 (SYMTAB)                     0x420c

0x0000000a (STRSZ)                      86133 (bytes)

0x0000000b (SYMENT)                     16 (bytes)

0x00000003 (PLTGOT)                     0xcc588

0x00000002 (PLTRELSZ)                   1032 (bytes)

0x00000014 (PLTREL)                     REL

0x00000017 (JMPREL)                     0x22144

0x00000011 (REL)                        0x21774

0x00000012 (RELSZ)                      2512 (bytes)

0x00000013 (RELENT)                     8 (bytes)

0x6ffffffa (RELCOUNT)                   4012

0x00000000 (NULL)

[转]Android下怎么使用LDD查看依赖库的更多相关文章

  1. Android Studio 更换国内源下载依赖库

    我的博客:http://daycoding.com 小小程序猿 由于国内GFW的原因,经常导致android studio 莫名其妙的编译不了,多数原因是由于不能下载依赖库 Gradle支持三种不同的 ...

  2. linux下JUCE源码编译依赖库

    JUCE 源码https://github.com/julianstorer/JUCE 想在ubuntu下编译需要提前安装以下依赖库 sudo apt-get install mesa-common- ...

  3. Android Studio 3.5.2添加依赖库

    因为要连接服务器的数据库,百度了一下经验,需要添加一些mysql库,看了一下经验,没有找到3.5.2版本的添加依赖库的教程. 因为新版本的androidstudio有一些不同,作以记录. 比如我们要添 ...

  4. Android下查看共享库依赖项

    Android下查看共享库依赖项 [时间:2017-02] [状态:Open] [关键词:android,共享库依赖项,so,ndk,objdump,readelf] 起因 近期在处理Android下 ...

  5. Android Studio将Eclipse的项目作为module的依赖库

    情形: 我们现在有一个eclipse的项目,我们想把这个项目作为android studio的module的一个依赖库. 以前我们在eclipse的时候常常是在一个工作区里面把一个A工程 as a l ...

  6. UNIX环境下用C语言写静态库与动态库

    静态库,动态库用UNIX 的术语来说,或者叫做归档文件(archive 常以.a 结尾)和共享对象(share object 常以lib 开头.so 结尾)更为准确.静态库,动态库可能是WINDOWS ...

  7. ldd 查看程序依赖库

    ldd 查看程序依赖库 https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/ldd.html

  8. As环境下添加android support library依赖库

    2015年的google大会上,google发布了新的Android Support Design库的新组件之一,以此来全面支持Material Design 设计风格的UI效果,为了可以使用这些新颖 ...

  9. 【转】Android开源项目 分类 便于查看

    之前转载了一个开源项目的文章,发现那些都是没有系统的总结,这里又转载一篇有系统总结的文章. Android开源项目系列汇总已完成,包括: Android开源项目第一篇——个性化控件(View)篇 An ...

随机推荐

  1. C#/.NET主线程与子线程之间的关系

    以前一直没有在程序中写过总结,再翻开程序时却不知所云,所以我决定写总结        一般 一个应用程序就对应一个进程,一个进程可有一个或多个线程,而一般有一个主线程.       有的博客上说“至少 ...

  2. emacs之配置8,gdb调试设置

    emacsConfig/gdb-setting.el (global-set-key [(f5)] 'gud-go) (global-set-key [(f7)] 'gud-step) (global ...

  3. mysql-12序列使用

    mysql序列是一组整数:1,2,3....,由于一张数据表只能有一个字段自增主键,如果你想实现其他字段自动增加,就可以使用mysql序列来实现. 使用auto_increment来定义列 drop ...

  4. 01:zabbix监控redis

    一.zabbix 自动发现并监控redis多实例 1.1 编写脚本 1.1.1 redis_low_discovery.sh 用于发现redis多实例 [root@redis02 homed]# ca ...

  5. 8种常被忽视的SQL错误用法

    作者:一杯甜酒 原文:https://blog.csdn.net/u012562943/article/details/71403500 sql语句的执行顺序: FROM <left_table ...

  6. Shell脚本的调试方法

    Shell脚本的调试方法 Shell提供了一些用于调试脚本的选项,如下所示: -n    读一遍脚本中的命令但不执行,用于检查脚本中的语法错误 -v    一边执行脚本,一边将执行过的脚本命令打印到标 ...

  7. lua的注释

    和C语言一样,lua也有单行注释和多行注释之分 单行注释: 采用“--”来对注释后面的字符进行注释,类似于 ISO C90之后的 C语言的注释"//" 多行注释:采用"- ...

  8. Maven(七) maven 常用命令

    转载于:http://blog.csdn.net/hynet/article/details/8664747 1. 用Maven 命令创建一个简单的 Maven 项目 在cmd中运行如下命令: mvn ...

  9. C#中使用DLL相关问题

    一,C#调用 C/C++ 库函数 1,UNITY的C# VS工程常常打不开 属性页,右键工程无 [添加引用]项.原因是VS的自带工具[适用于UNITY的工具]导致的. 解决办法:VS-[工具]-[选项 ...

  10. 对象的notify方法的含义和对象锁释放的三种情况

    1,notify的含义     (1)notify一次只随机通知一个线程进行唤醒 (2)在执行了notify方法之后,当前线程不会马上释放该对象锁,呈wait状态的线程也不能马上获得该对象锁, 要等到 ...