Come stampare un elenco di simboli esportati da una libreria dinamica


121

Quindi ho cercato di far funzionare le librerie dinamiche nel mio progetto XCode con Mac OS X. Finora nessuna gioia.

Sono in grado di caricare il file dylib, ma quando chiamo dlsym per ottenere il puntatore alla funzione, restituisce 0 e dlerror dice che il simbolo non è stato trovato.

Quindi mi chiedo se esiste un modo semplice per elencare i simboli esportati da un file dylib. Qualunque idea sarebbe apprezzata.

Risposte:


152

uomo 1 nm

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

Per esempio:

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

2
Sotto OS X Leopard (10.5, sì, lo so ...) dovresti usare nm -gu, cioè l' -uopzione è minuscola.
Laryx Decidua

4
man 1 nm è autonomo e continuerà a funzionare quando la riga di comando cambia: p
MK.

9
@MK. man 1 nmelenca molte cose che si possono fare con nm. Ancora una volta, è una risorsa esterna che si può leggere per scoprire una soluzione, ma non una soluzione in sé al "modo semplice per elencare i simboli esportati da un file dylib" richiesto . " nm -gU ….dylib" È, tuttavia.
Slipp D. Thompson,

59

Usa otool :

otool -TV your.dylib

O

nm -g your.dylib

4
Sul nuovo macOS, otool -T mostrerà otool: -T functionality obsoleteuse objdump -t
joseph.smeng

Sebbene sia vero che i otool -Treport functionality obsoletenel nuovo OS X, è anche vero che (per le librerie dinamiche) objdump -triporterannoThe file was not recognized as a valid object file.
TML


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.