manpage
新:https://linuxjm.osdn.jp/html/GNU_binutils/man1/nm.1.html
旧:http://www.linux.or.jp/JM/html/GNU_binutils/man1/nm.1.html
nm – オブジェクトファイルのシンボルをリストする
T: テキスト領域(テキストっていうのはコード(プログラム)のことです)
U: 未解決シンボル
B: 初期化されていないデータ領域
(BSS: 確か、ロード後に必要となるサイズだけが示されてるんじゃなかったっけ?)
D: データ領域
大文字の場合はグローバルで、小文字だとそうではないということです。Cレベル だとファイルスコープでのexternとstaticということになるでしょうか。
$ info nm
で見れる。
目的のライブラリ関数が、どのライブラリに入っているかは nm コマンドで探すとよい。例えば sin 関数がどのライブラリに入っているかわからないときは
% nm -o /usr/lib/*.a /usr/X11R6/lib/*.a | grep sin
とすればよい。参照のみのシンボル (実体がない) は
U _sin
と表示されるので、
% nm -o /usr/lib/*.a /usr/X11R6/lib/*.a | grep sin | grep -v ' U '
とすると、参照のみのシンボルを除外できる。
nm -D /usr/lib/libc.so
コメント