ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2013年6月21日 星期五

arm-eabi-readelf 列出用到的 so (android 的 ldd)

如果要看一個 執行 檔或是 so 有用到什麼 so. (相依)。
可以用 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...)

沒有留言:

標籤

網誌存檔