ldd equivalent on android
Solution 1
Thanks to android developers. My feature request was implemented :) Now we have ndk-depends, a tool that allows to troubleshoot dependencies.
Edit: it doesn't do full symbol resolution though. E.g. if you build against Android-14 and try to use methods that didn't exist in old Androids, then this tool won't list missing symbols. This part was left as a TODO in ndk-depends.
Solution 2
If you don't have the NDK try doing:
readelf --dynamic filename | grep NEEDED
to display the dynamic libraries for an elf binary.
Solution 3
At Android terminal try this:
strings /path/to/your/file | grep ^lib
Found here:
https://forum.xda-developers.com/showthread.php?t=2737126&page=5
Related videos on Youtube
Pavel P
Updated on January 21, 2020Comments
-
Pavel P over 4 years
I have a libTest.so that does not load on some devices. logcat is absolutely useless. Using
arm-linux-androideabi-readelf.exe -d libTest.so
I was able to see all required libs that libTest.so needs. I pulled them all in, into the same folder on my local PC.How can I find out which symbols is missing and in which library? I have only standard set of tools from the NDK (nm, readelf, objdump etc). Which tool and how can I use so that it parses my libTest.so and all dependent libs as well and tells me which symbol prevents my lib from loading on the target device.
-
yerlilbilgin about 3 years<NDK_DIR>/toolchains/llvm/prebuild/<HOST_OS>/bin/<ARCH>-strings | grep ^lib | grep so
-
-
Dima Tisnek over 10 yearsAndroid appears to use
/system/bin/linker
and not/lib/ld-linux.so
. Anyhow I can't get linker to output anything -
markshep about 10 yearsI just get
Segmentation fault
when invoking/system/bin/linker
directly, no matter what arguments I use!