• Android下查看共享库依赖项


    Android下查看共享库依赖项

    [时间:2017-02] [状态:Open]
    [关键词:android,共享库依赖项,so,ndk,objdump,readelf]

    起因

    近期在处理Android下动态库依赖的问题。我知道在Windows下可以使用dependency-walker查看动态库或者可执行文件的依赖性,在linux下可以使用ldd查看动态库的依赖项,比如查看libavcodec.so的输出如下:

    $ ldd libavcodec.so
    linux-vdso.so.1 = (0x00007ffe89974000)
    libswresample.so.2 =not found
    libavutil.so.55 =not found
    libdl.so.2 =/lib/x86_64-linux-gnu/libdl.so.2 (0x00007f964e331000)
    libm.so.6 =/lib/x86_64-linux-gnu/libm.so.6 (0x00007f964e029000)
    libz.so.1 =/lib/x86_64-linux-gnu/libz.so.1 (0x00007f964de0e000)
    libpthread.so.0 =/lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f964dbef000)
    libc.so.6 =/lib/x86_64-linux-gnu/libc.so.6 (0x00007f964d825000)
    /lib64/ld-linux-x86-64.so.2 (0x000055b0a681c000)

    那么Android下怎么查看呢?

    我们都知道Android的内核是基于Linux的,可以从AOSP中你找不到ldd这个可执行程序,ndk中也没有。

    这就是本文要解决的问题。
    查看Android下共享库的依赖性。

    解决方案

    方案一:直接移植ldd程序到Android上

    同一个基准平台的开源代码,完全可以做到,有兴趣的可以单独找找资料。

    方案二:ndk中的readelf

    在ndk的toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-readelf中可以找到对应的可执行程序,查看依赖项实用下面命令:

    ./arm-linux-androideabi-readelf -d libmedia.so

    方案三:AOSP中的objdump

    在AOSP的prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin中可以看到arm-linux-androideabi-readelfarm-linux-androideabi-objdump都可以使用,其中objdump的命令如下:

    ./arm-linux-androideabi-objdump -x libmedia.so | grep NEEDED

    总结

    本文主要是关于如何查看Android下动态库依赖项的方法。

    参考资料

    1. Android下怎么使用LDD查看依赖库
    2. Objdump查看依赖so动态库文件
  • 相关阅读:
    如何向线程传递参数
    IntelliJ IDEA 13 Keygen
    单链表的基本操作
    顺序表静态查找
    有向图的十字链表表存储表示
    BF-KMP 算法
    图的邻接表存储表示(C)
    二叉树的基本操作(C)
    VC远控(三)磁盘显示
    Android 数独游戏 记录
  • 原文地址:https://www.cnblogs.com/tocy/p/android-check-dependency.html
Copyright © 2020-2023  润新知