13

私の質問がLinuxの方法で意味があるかどうかはわかりません。Visual Studio ツールキットの dumpbin.exe に似たものを探しています。

基本的に、多数のライブラリと単一の実行可能ファイルを含む既存のプロジェクトがあります。どのライブラリが本当に必要で、各ライブラリでどの機能が機能するかを把握したいと思います。

このプロジェクトは ARM デバイスを対象としているため、共有オブジェクトのみを使用しています。

4

1 に答える 1

16

多分あなたはlddとnmを使うことができます。lddは、どの共有オブジェクト(winではdll)が必要かを教えてくれます。nmはシンボルをダンプするように指示します。

実行例:

$ ldd a
        linux-vdso.so.1 =>  (0x00007fffd1dff000)
        libc.so.6 => /lib/libc.so.6 (0x00007fcbc97d9000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fcbc9b21000)
$ nm a
0000000000600e40 d _DYNAMIC
0000000000600fe8 d _GLOBAL_OFFSET_TABLE_
00000000004005b8 R _IO_stdin_used
                 w _Jv_RegisterClasses
0000000000601020 A __bss_start
0000000000601008 D __data_start
0000000000601010 D __dso_handle
                 w __gmon_start__
0000000000600e14 d __init_array_end
0000000000600e14 d __init_array_start
00000000004004d0 T __libc_csu_fini
00000000004004e0 T __libc_csu_init
                 U __libc_start_main@@GLIBC_2.2.5
0000000000601020 A _edata
0000000000601028 A _end
00000000004005a8 T _fini
00000000004003c0 T _init
0000000000400400 T _start
0000000000601008 W data_start
00000000004004b8 T main

編集:objdumpを忘れました。すなわち:

$ objdump -f a

a:     file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x0000000000400400

-xを使用すると、すべてのヘッダーが表示されます(投稿するにはかなり冗長ですが、試してみてください:))

于 2011-08-08T14:40:33.877 に答える