Trova librerie a cui era collegato un binario


40

So che esiste un comando che mi elenca le librerie e le rispettive versioni a cui era collegato un software.

Qualcosa con ld o libtool?

Ma non riesco proprio a ricordare. Ho passato un po 'di tempo su Google, ma non ho trovato nulla di utile.

L'aggiornamento
ldd <binary> sarebbe di aiuto su Linux, ( da @ Ernelli ) mentre ho scoperto che otool -L <binary>fa qualcosa di simile su MacOS X.


Risposte:


42

Prova ldd binary-exec

Esempio:

~$ ldd /bin/bash
    linux-gate.so.1 =>  (0x00606000)
    libncurses.so.5 => /lib/libncurses.so.5 (0x00943000)
    libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00c5d000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x003e9000)
    /lib/ld-linux.so.2 (0x00a41000)

Dang! Quindi il mio primo tentativo è stato giusto. Devo solo installarlo sul mio Mac in modo che riconosca acutamente il comando ;-)
er4z0r

@ er4z0r: Cordiali saluti, Mac OS è BSD, non Linux .
gravità

6
grwaity: hai ragione. Mentre ldd sarebbe di aiuto su Linux ho scoperto che 'otool -L <binary>' fa qualcosa di simile.
er4z0r

15

Per trovare ciò di cui ha bisogno direttamente:

readelf -d APP | grep NEEDED

lddcome menzionato altrove mostrerà tutte le librerie dirette e indirette - tutto ciò di cui ha bisogno in fase di esecuzione. Questo potrebbe non essere un elenco completo, poiché potresti aprire dinamicamente le cose con dlopen (), ma questo dovrebbe funzionare il 99% delle volte.

ld e libtool sono usati in fase di compilazione / collegamento. Non sono utili una volta che hai un'app.

EDIT Riesco a vedere in seguito le risposte che stavi chiedendo su OSX, ma voglio aggiungere alla mia risposta su strumenti Linux:

Una cosa che ho dimenticato di menzionare, un po 'di tempo fa; hai chiesto delle versioni. Né lddreadelfsarà rispondere alla domanda "che cosa la versione". Ti diranno il nome del file della libreria che stai cercando e la convenzione di denominazione potrebbe avere alcune informazioni sulla versione, ma nulla lo applica. I simboli possono essere sottoposti a versione e dovresti vedere molto di più su un livello inferiore nmper vederli,


9

Un altro modo sarebbe usare objdump.

objdump -x "binario" | grep NECESSARIO

Questo mostra tutte le dipendenze necessarie solo per questo binario. Molto utile.

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.