GNU/Linux >> Linux の 問題 >  >> Linux

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

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


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

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

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

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


readelf も使用できる他の既に述べたツールの中で (マニュアル)。 objdump に似ています しかし、さらに詳しく説明します。違いの説明については、こちらを参照してください。

$ readelf -sW /lib/liblzma.so.5 |head -n10

Symbol table '.dynsym' contains 128 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (4)
     2: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (4)
     3: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_deregisterTMCloneTable
     4: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (5)
     5: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (5)
     6: 00000000     0 FUNC    GLOBAL DEFAULT  UND [email protected]_2.0 (5)

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


Linux
  1. Linux 共有ライブラリの紹介 (共有ライブラリの作成方法)

  2. Linux でデフォルトのシェルを変更する方法

  3. Linux でデフォルトのシェルを変更する方法

  1. Linux で共有ライブラリを初期化する方法

  2. Linux で共有ライブラリのバージョン管理を行う方法は?

  3. Linux アーキテクチャの C コードで利用可能なすべての関数/シンボルをオンザフライで一覧表示する方法は?

  1. Linuxでパッケージの依存関係を一覧表示する方法

  2. Linux で googleTest を共有ライブラリとして設定する方法

  3. Linux で .so ファイルを java.library.path に追加する方法