GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso visualizzare l'elenco delle funzioni che una libreria condivisa di Linux sta esportando?

Su un MAC, devi usare nm *.o | c++filt , poiché non esiste -C opzione in nm .


Ciò di cui hai bisogno è nm e il suo -D opzione:

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

I simboli esportati sono indicati da un T . I simboli obbligatori che devono essere caricati da altri oggetti condivisi hanno un U . Si noti che la tabella dei simboli non include solo funzioni, ma anche variabili esportate.

Vedi il nm pagina di manuale per ulteriori informazioni.


Tra gli altri strumenti già menzionati puoi usare anche readelf (Manuale). È simile a objdump ma va più nel dettaglio. Vedi questo per la spiegazione della differenza.

$ 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 può anche fare il lavoro


Linux
  1. Come elencare le dipendenze di un pacchetto in Linux

  2. Come modificare la shell predefinita in Linux

  3. Come modificare la shell predefinita in Linux

  4. Come inizializzare una libreria condivisa su Linux

  5. Due versioni di Python su Linux. come rendere 2.7 il valore predefinito

Come elencare i membri di un gruppo in Linux

Come visualizzare il contenuto di un archivio o di un file compresso in Linux

Come elencare le librerie condivise utilizzate dagli eseguibili in Linux

Come modificare la shell predefinita nel sistema Linux

Come visualizzare o elencare i lavori Cron in Linux

Come trovare l'elenco dei repository installati in Linux