libc.so.6ファイルにprintfを含むシンボルの数が表示されるはずです。私はnmツールを使用してそれらを見つけましたが、libc.so.6にはシンボルがないと表示されています。
おそらく通常のシンボルが取り除かれ、残っているのはnm -D
で取得できる動的シンボルです。
@PSkocikがこれに答えました。詳細を追加したいだけです。 ELFには2種類のシンボルセクションがあります:.symtab
と.dynsym
(詳細は Linux Standard Base Core Specification、別名LSB_5.0. を参照)。 .symtab
は、共有ライブラリ自体のリンク手順です。リンクが完了すると、.symtab
セクションは不要になります。 .dynsym
セクションには、実行時にダイナミックリンカーによって検索されることになっている重要なシンボルが含まれています。 nm
はデフォルトで.symtab
セクションのシンボルのみをダンプします。
LSB_5.0. セクション10.2.2.1の「ELFセクションタイプ」では、準拠している共有ライブラリには.symtab
または.dynsym
のいずれかが必要ですが、両方は必要ではありません。 ABIライブラリの一部として、libcは.symtab
から削除され、仕様に準拠しています。
共有オブジェクトであるか、通常のASCIIファイルであるかを確認します。共有オブジェクトである場合は、「ELF 32ビットLSB共有オブジェクト」が表示されます。
file /lib/i386-linux-gnu/libc.so.6