web-dev-qa-db-ja.com

Linux共有ライブラリがエクスポートしている関数のリストを表示するにはどうすればよいですか?

Linuxで共有ライブラリのエクスポートされた関数を表示したい。

どのコマンドを使用してこれを行うことができますか?

(Windowsで使用するプログラムは異なります)

165
ljbade

必要なのはnmとその-Dオプションです。

$ nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
         U atanf
         U calloc
.
.
.

エクスポートされた集計は、Tで示されます。他の共有オブジェクトからロードする必要がある必須シンボルには、Uがあります。シンボルテーブルには関数だけでなく、エクスポートされた変数も含まれていることに注意してください。

詳細については、nmマニュアルページ を参照してください。

268
thkala

objdump -T *.soも仕事をするかもしれません

33
user2391685

MACでは、nmnm *.o | c++filtオプションがないため、-Cを使用する必要があります。

3
Vincent Fenet