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