Jak wydrukować listę symboli wyeksportowanych z biblioteki dynamicznej

121

Więc starałem się zmusić biblioteki dynamiczne do pracy w moim projekcie XCode pod Mac OS X. Jak dotąd bez radości.

Jestem w stanie załadować plik dylib, ale kiedy wywołuję dlsym, aby uzyskać wskaźnik funkcji, zwraca 0, a dlerror mówi, że symbol nie został znaleziony.

Zastanawiam się więc, czy istnieje prosty sposób na wyświetlenie symboli wyeksportowanych z pliku dylib. Wszelkie pomysły byłyby świetne.

Gerald
źródło

Odpowiedzi:

152

mężczyzna 1 nm

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

Na przykład:

nm -gU /usr/local/Cellar/cairo/1.12.16/lib/cairo/libcairo-trace.0.dylib
MK.
źródło
2
Pod OS X Leopard (10.5, tak, wiem ...) powinieneś używać nm -gu, tzn. -uOpcja jest małymi literami.
Laryx Decidua
4
man 1 nm jest samowystarczalny i będzie kontynuował pracę po zmianie wiersza poleceń: p
MK.
9
@MK. man 1 nmwymienia wiele rzeczy, które można zrobić z nm. Ponownie, jest to zewnętrzny zasób, który można przeczytać w celu znalezienia rozwiązania, ale nie samo rozwiązanie żądanego „prostego sposobu na wyeksportowanie symboli, które są eksportowane z pliku dylib” . „ nm -gU ….dylib” Jest jednak.
Slipp D. Thompson
59

Użyj otool :

otool -TV your.dylib

LUB

nm -g your.dylib
linuxbuild
źródło
4
Na nowych MacOS, otool -T pokaże otool: -T functionality obsoleteużycie objdump -t
joseph.smeng
Chociaż prawdą jest, że otool -Traporty functionality obsoletew nowszym OS X, prawdą jest również, że (w przypadku bibliotek dynamicznych) objdump -tbędą raportowaćThe file was not recognized as a valid object file.
TML
14

Posługiwać się nm -a your.dylib

Wypisze wszystkie symbole, w tym globale

Omkar Ramtekkar
źródło
0

Użyj Mach-OView do przeglądania wszystkich symboli w dylib

https://sourceforge.net/projects/machoview/

Sahil Doshi
źródło
Byłem podekscytowany, że dowiedziałem się o tym GUI, ale zawiesił się po załadowaniu dylib. Używam macOS Mojave.
chrisdembia