在Android上相当于ldd

我有一个libTest.so,不加载某些设备上。 logcat是绝对没用的。 使用arm-linux-androideabi-readelf.exe -d libTest.so我能够看到libTest.so需要的所有必需库。 我把他们全部拉进我的本地PC上的同一个文件夹。

我怎样才能找出哪些符号丢失,在哪个库? 我只有从NDK(nm,readelf,objdump等)的标准工具集。 哪个工具以及如何使用,以便它parsing我的libTest.so和所有相关的库,并告诉我哪个符号阻止我的lib加载到目标设备上。

Solutions Collecting From Web of "在Android上相当于ldd"

感谢android开发者。 我的function请求已经实现:)现在我们有了ndk-depends ,这个工具可以解决依赖问题。

编辑:虽然它不做全符号parsing。 例如,如果您针对Android-14进行构build,并尝试使用旧版Android中不存在的方法,则此工具不会列出缺less的符号。 这部分在ndk-depends中留作TODO。

我只是遇到了同样的问题,不想安装ndk也没有抓整个源代码树来找出一个exe文件。

 readelf --dynamic filename | grep NEEDED 

显示一个elf二进制文件的dynamic库。

在Androidterminal上试试这个:
strings /path/to/your/file | grep ^lib strings /path/to/your/file | grep ^lib在这里find: https : strings /path/to/your/file | grep ^lib page =5

你可以做一些事情:

 $ /lib/ld-linux.so.2 --list filename 

这是因为ldd只是一个shell脚本,就像dynamic加载器的包装一样。 dynamic加载器的名称,即ld- {version} .so可能不同。