Na MAC musíte použít nm *.o | c++filt
, protože neexistuje žádný -C
možnost v nm
.
Co potřebujete, je nm
a jeho -D
možnost:
$ nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
U atanf
U calloc
.
.
.
Exportované sumboly jsou označeny T
. Požadované symboly, které musí být načteny z jiných sdílených objektů, mají U
. Všimněte si, že tabulka symbolů nezahrnuje pouze funkce, ale také exportované proměnné.
Viz nm
manuálová stránka pro více informací.
Mezi další již zmíněné nástroje můžete využít i readelf
(manuál). Je podobný objdump
ale jde více do detailů. Vysvětlení rozdílu naleznete zde.
$ 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
může také dělat práci