共有オブジェクトライブラリで定義されている関数のリストを取得したり、特定の関数が共有オブジェクトライブラリで定義されていることを確認するにはどうすればよいですか。
ベストアンサー1
*nixシステムにはさまざまな実行可能ファイル形式があります。 a.outは数年前には一般的な形式であり、今日、ELFはすべての主要システムに存在しています。
ELF は、各ファイルのデータ部分を記述するヘッダーで構成されます。
あなたが探している部分は、各シンボル(関数、変数)がそのアドレスにマップされるシンボルテーブルです。
共有ライブラリは、.dynsymというセクションにグローバルシンボルを保持します。
あなたが探しているのは、このセクションの型関数のシンボルとグローバルバインディングです。
readelf --syms ./libfoo.so
シンボルの出力を提供します。
SolarisおよびFreeBSDでも使用できますelfdump
。
objdump
また、ターゲットファイルに関する多くの情報を表示し、スイッチを使用してセクションを指定できます-j
。