Cara mencetak daftar simbol yang diekspor dari pustaka dinamis

121

Jadi saya telah mencoba untuk mendapatkan perpustakaan dinamis untuk bekerja dalam proyek Xcode saya di bawah Mac OS X. Sejauh ini tidak menyenangkan.

Saya dapat memuat file dylib, tetapi ketika saya memanggil dlsym untuk mendapatkan penunjuk fungsi, ia mengembalikan 0 dan dlerror mengatakan simbol tidak ditemukan.

Jadi saya bertanya-tanya apakah ada cara sederhana untuk membuat daftar simbol yang diekspor dari file dylib. Ide apa pun akan bagus.

Gerald
sumber

Jawaban:

152

pria 1 nm

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

Sebagai contoh:

nm -gU /usr/local/Cellar/cairo/1.12.16/lib/cairo/libcairo-trace.0.dylib
MK.
sumber
2
Di bawah OS X Leopard (10.5, ya, saya tahu ...) Anda harus menggunakan nm -gu, misalnya -uopsinya adalah huruf kecil.
Laryx Decidua
4
man 1 nm berdiri sendiri dan akan terus bekerja saat baris perintah berubah: p
MK.
9
@Tokopedia man 1 nmmencantumkan banyak hal yang dapat dilakukan dengan nm. Sekali lagi, ini adalah sumber daya eksternal yang dapat dibaca untuk menemukan solusi, tetapi bukan solusi itu sendiri untuk "cara sederhana untuk membuat daftar simbol yang diekspor dari file dylib" yang diminta . " nm -gU ….dylib" Adalah.
Slipp D. Thompson
59

Gunakan otool :

otool -TV your.dylib

ATAU

nm -g your.dylib
linuxbuild
sumber
4
Di macOS baru, otool -T akan menampilkan otool: -T functionality obsoletepenggunaan objdump -t
joseph.smeng
Meskipun benar bahwa otool -Tlaporan functionality obsoletedi OS X yang lebih baru, itu juga benar bahwa (untuk perpustakaan dinamis) objdump -takan melaporkanThe file was not recognized as a valid object file.
TML
14

Menggunakan nm -a your.dylib

Ini akan mencetak semua simbol termasuk global

Omkar Ramtekkar
sumber
0

Gunakan Mach-OView untuk melihat semua Simbol di dylib

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

Sahil Doshi
sumber
Saya sangat senang telah mempelajari GUI ini tetapi GUI tersebut macet untuk saya setelah saya memuat dylib. Saya menggunakan macOS Mojave.
chrisdembia