Linux'ta paylaşılan bir kütüphanenin dışa aktarılan işlevlerini görüntülemek istiyorum.
Hangi komut bunu yapmama izin veriyor?
(Windows üzerinde ben bağlı programı kullanıyorum)
Linux'ta paylaşılan bir kütüphanenin dışa aktarılan işlevlerini görüntülemek istiyorum.
Hangi komut bunu yapmama izin veriyor?
(Windows üzerinde ben bağlı programı kullanıyorum)
Yanıtlar:
İhtiyacınız olan şey nmve -Dseçeneği:
$ nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
U atanf
U calloc
.
.
.
İhraç edilen sumboller a ile gösterilir T. Diğer paylaşılan nesnelerden yüklenmesi gereken semboller için a U. Sembol tablosunun yalnızca işlevler değil, dışa aktarılan değişkenler de içerdiğini unutmayın.
Daha fazla bilgi için nm kılavuz sayfasına bakınız .
nmolmadan kullanın -D.
objdump -T *.so işi de yapabilir
Bir MAC'de, içinde seçenek nm *.o | c++filtolmadığı için kullanmanız gerekir .-Cnm
Daha önce bahsedilen diğer araçların yanı sıra kullanabilirsiniz readelf( manuel ). Buna benzer, objdumpancak daha ayrıntılı olarak gider. Bkz bu farkın açıklama için.
$ 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 pthread_mutex_unlock@GLIBC_2.0 (4)
2: 00000000 0 FUNC GLOBAL DEFAULT UND pthread_mutex_destroy@GLIBC_2.0 (4)
3: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable
4: 00000000 0 FUNC GLOBAL DEFAULT UND memmove@GLIBC_2.0 (5)
5: 00000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.0 (5)
6: 00000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.0 (5)