GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich die Liste der Funktionen anzeigen, die eine gemeinsam genutzte Linux-Bibliothek exportiert?

Auf einem MAC müssen Sie nm *.o | c++filt verwenden , da es kein -C gibt Option in nm .


Was Sie brauchen, ist nm und seine -D Möglichkeit:

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

Exportierte Sumbole werden durch einen T gekennzeichnet . Erforderliche Symbole, die von anderen gemeinsam genutzten Objekten geladen werden müssen, haben einen U . Beachten Sie, dass die Symboltabelle nicht nur Funktionen enthält, sondern auch exportierte Variablen.

Siehe nm Handbuchseite für weitere Informationen.


Neben anderen bereits erwähnten Tools können Sie auch readelf verwenden (Handbuch). Es ähnelt objdump geht aber mehr ins detail. Siehe dies für die Erklärung der Unterschiede.

$ 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 kann auch den Job machen


Linux
  1. So listen Sie die Abhängigkeiten eines Pakets in Linux auf

  2. Einführung in gemeinsam genutzte Linux-Bibliotheken (So erstellen Sie gemeinsam genutzte Bibliotheken)

  3. So ändern Sie die Standard-Shell in Linux

  4. So ändern Sie die Standard-Shell in Linux

  5. Wie listet man spontan alle Funktionen/Symbole auf, die in C-Code auf einer Linux-Architektur verfügbar sind?

So listen Sie die Mitglieder einer Gruppe in Linux auf

So zeigen Sie den Inhalt eines Archivs oder einer komprimierten Datei unter Linux an

So listen Sie gemeinsam genutzte Bibliotheken auf, die von ausführbaren Dateien in Linux verwendet werden

So ändern Sie die Standard-Shell im Linux-System

So zeigen Sie Cron-Jobs in Linux an oder listen sie auf

So finden Sie die Liste der installierten Repositories in Linux