'ndk-depends' Overview === Introduction: ------------- The `ndk-depends` tool that comes with this Android NDK allows you to dump the ELF dependencies of a given ELF shared library or executable. With the --print-java option, it can also be used to generate a Java source fragment to load your native library and its dependencies in the correct order (see example below). Use '`ndk-depends --help`' for complete usage information. This tool is designed to support: - Either 32-bit or 64-bit ELF binaries. - Either little-endian or big-endian ELF binaries. - Unicode file paths, on Windows. Note: The Windows binary will NOT work with Cygwin paths ! Examples: --------- * `ndk-depends path/to/libfoo.so` > Dump all dependencies of libfoo.so, in topological order, so that any library listed in the result appears before any other library it depends on. * `ndk-depends --print-paths path/to/libfoo.so` > Same as above, but also prints the path of the libraries on your host file system. * `ndk-depends -L some/other/path path/to/libfoo.so` > Append 'some/other/path' to the search path for depending libraries when looking at the dependencies for 'libfoo.so' * `ndk-depends --print-direct path/to/libfoo.so` > Only print the _direct_ dependencies of libfoo.so, and nothing else, in the order they appear in the file. * `ndk-depends path/to/libfoo.so --print-java` > Prints a Java source fragment that corresponds to the load of 'libfoo' with System.loadLibrary(). This lists all libraries in reverse order, and ignores system libraries (e.g. libc.so). * `ndk-depends path/to/libfoo.so --print-dot | dot -Tpng -o /tmp/graph.png` > Prints the dependency graph as Graphviz .dot file, then generate a PNG image for it. * `ndk-depends --help` > Print complete usage details. Let's assume your project has the several libraries: libfoo.so -> depends on libbar.so and libzoo.so libbar.so -> depends on the system's liblog.so libzoo.so -> depends on libbar.so Then '`ndk-depends libs/armeabi/libfoo.so`' will typically print: libfoo.so libzoo.so libbar.so liblog.so And '`ndk-depends --print-java libs/armeabi/libfoo.so`' will print: System.loadLibrary("bar"); System.loadLibrary("zoo"); System.loadLibrary("foo"); This is handy to avoid computing the reverse library order yourself for complex projects. For more details, see the output of '`ndk-depends --help`'.