Dinamik bir kitaplıktan dışa aktarılan sembollerin listesi nasıl yazdırılır


121

Bu yüzden, Mac OS X altında XCode projemde çalışmak için dinamik kitaplıklar kurmaya çalışıyorum. Şimdiye kadar neşe yok.

Dylib dosyasını yükleyebiliyorum, ancak işlev işaretçisini almak için dlsym'i çağırdığımda 0 döndürüyor ve dlerror, sembol bulunamadı diyor.

Bu nedenle, bir dylib dosyasından dışa aktarılan sembolleri listelemenin basit bir yolu olup olmadığını merak ediyorum. Herhangi bir fikir harika olurdu.

Yanıtlar:


152

adam 1 nm

https://web.archive.org/web/20160316222941/https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/nm.1.html

Örneğin:

nm -gU /usr/local/Cellar/cairo/1.12.16/lib/cairo/libcairo-trace.0.dylib

2
OS X Leopard (10.5, evet, biliyorum ...) altında kullanmalısınız nm -gu, yani -useçenek küçük harftir.
Laryx Decidua

4
man 1 nm bağımsızdır ve komut satırı değiştiğinde çalışmaya devam eder: p
MK.

9
@MK. man 1 nmnm ile yapılabilecek birçok şeyi listeler. Yine, bu, bir çözümü keşfetmek için okunabilen harici bir kaynaktır, ancak istenen "bir dylib dosyasından dışa aktarılan sembolleri listelemenin basit bir yolu" için bir çözüm değildir . " nm -gU ….dylib", Ancak.
Slipp D. Thompson

59

Otool kullanın :

otool -TV your.dylib

VEYA

nm -g your.dylib

4
Yeni macOS'ta otool -T otool: -T functionality obsoletekullanımı objdump -t
joseph.smeng

Daha yeni OS X'teki otool -Traporların functionality obsolete(dinamik kitaplıklar için) objdump -trapor edeceği doğru olsa daThe file was not recognized as a valid object file.
TML


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.