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 nm
ve -D
seç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 .
nm
olmadan kullanın -D
.
objdump -T *.so
işi de yapabilir
Bir MAC'de, içinde seçenek nm *.o | c++filt
olmadığı için kullanmanız gerekir .-C
nm
Daha önce bahsedilen diğer araçların yanı sıra kullanabilirsiniz readelf
( manuel ). Buna benzer, objdump
ancak 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)