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