可以用 ldd
android 的 tool 好像沒有 arm, elf 用的 ldd。
但是有 arm-eabi-readelf
用
arm-eabi-readelf -d
可以列出參考到的 so。
$ arm-eabi-readelf -d system/bin/sh Dynamic section at offset 0x1342c contains 24 entries: Tag Type Name/Value 0x00000003 (PLTGOT) 0x1b6fc 0x00000002 (PLTRELSZ) 672 (bytes) 0x00000017 (JMPREL) 0x8ee4 0x00000014 (PLTREL) REL 0x00000011 (REL) 0x9184 0x00000012 (RELSZ) 56 (bytes) 0x00000013 (RELENT) 8 (bytes) 0x00000015 (DEBUG) 0x0 0x00000006 (SYMTAB) 0x8464 0x0000000b (SYMENT) 16 (bytes) 0x00000005 (STRTAB) 0x8b24 0x0000000a (STRSZ) 958 (bytes) 0x00000004 (HASH) 0x8128 0x00000001 (NEEDED) Shared library: [libc.so] 0x00000001 (NEEDED) Shared library: [libstdc++.so] 0x00000001 (NEEDED) Shared library: [libm.so] 0x00000020 (PREINIT_ARRAY) 0x1b000 0x00000021 (PREINIT_ARRAYSZ) 0x8 0x00000019 (INIT_ARRAY) 0x1b008 0x0000001b (INIT_ARRAYSZ) 8 (bytes) 0x0000001a (FINI_ARRAY) 0x1b010 0x0000001c (FINI_ARRAYSZ) 8 (bytes) 0x0000001e (FLAGS) 0x00000000 (NULL) 0x0其中標示 (NEEDED) 的部份,就是參考到的 so。
ref: http://stackoverflow.com/questions/10052041/how-to-list-library-dependencies-of-a-non-native-binary
用 objdump -p 也可以,
而且不用裝 cross-tool,host 端的 building tool 舊可以了。
-- readelf 就要跟 target 同一平台才行 (例如 arm...)
沒有留言:
張貼留言