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. cratedb 集群 docker-compose 安装试用

    关于集群的配置说明可以参考官方文档,或者es 文档 详细代码参考 https://github.com/rongfengliang/cratedb-cluster-docker 参考配置 docker ...

  2. 【转】Java常量池详解

    今天My partner问我一个让他头疼的Java question,求输出结果: /** * * @author DreamSea 2011-11-19 */ public class Intege ...

  3. java web 程序---javabean实例--登陆界面并显示用户名和密码

    重点:注意大小写,不注意细节,这点小事,还需要请教 发现一个问题,也是老师当时写的时候,发现代码没错,但是就是运行问题. 大家看,那个java类,我们要求是所有属性均为私有变量,但是方法为公有的,如果 ...

  4. [转][html]大文件下载

    上面代码来自微软,用于下载大文件. 下面代码来自 http://www.cnblogs.com/smile-wei/p/4159213.html System.IO.Stream iStream = ...

  5. jetty之嵌入式开发

    一.Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开发人员可 ...

  6. Hive默认分割符

    1.Hive默认的分隔符 Hive的表数据,不管导出到HDFS还是本地文件系统,如果用户在导出时没有指定分割符,那么Hive表的数据在写入文件时,会使用默认的分隔符作为列分隔符,该默认的分割是“CTR ...

  7. Keras Sequential顺序模型

    keras是基于tensorflow封装的的高级API,Keras的优点是可以快速的开发实验,它能够以TensorFlow, CNTK, 或者 Theano 作为后端运行. 模型构建 最简单的模型是  ...

  8. django rest_framework 框架的使用02

    rest_framework 访问频率的限制(节流) 对于用户访问频率的显示,rest_framework 也有自己的类进行约束 先来一个自己的基于它的类的节流类的限制 class VisitCont ...

  9. C++中构造函数作用

    一. 构造函数是干什么的 class Counter { public: // 类Counter的构造函数 // 特点:以类名作为函数名,无返回类型 Counter() { m_value = ; } ...

  10. vue轮播(完整详细版)

    轮播组件vue <swiper :options="swiperOption" class='swiper-box'>     <swiper-slide v-f ...