GNU/Linux >> Linux Esercitazione >  >> Linux

Trova le librerie a cui è stato collegato un file binario

Tryldd 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)

Per trovare ciò di cui ha bisogno direttamente:

readelf -d APP | grep NEEDED

ldd come 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, dal momento che puoi aprire dinamicamente le cose con dlopen(), ma 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.

MODIFICA Posso vedere dalle risposte successive che stavi chiedendo su OSX, ma voglio aggiungere alla mia risposta sugli strumenti Linux:

Una cosa che ho dimenticato di menzionare, molto tempo fa; hai chiesto informazioni sulle versioni. Né lddreadelf risponderà alla domanda "quale versione". Ti diranno il nome file della libreria che stai cercando e la convenzione di denominazione potrebbe avere alcune informazioni sulla versione, ma nulla lo impone. I simboli possono essere versionati, e con nm dovresti avere molto di più su un livello ancora più basso per vederli,


Un altro modo sarebbe usare objdump.

objdump -x "binario" | grep NECESSARIO

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


Linux
  1. Patchare un binario con Dd?

  2. Linux:come verificare se un binario Linux è stato compilato come codice indipendente dalla posizione?

  3. Librerie grafiche 3D di Linux?

  4. Linux – Ldd non trova il percorso, come aggiungere?

  5. Come trovare quando lo Spfile è stato creato su un server Linux

Le mie 3 versioni Linux preferite

5 modi per trovare una descrizione e una posizione di un "comando binario" sul file system

Come scoprire gli eseguibili delle librerie dinamiche caricati durante l'esecuzione?

Compatibilità binaria della distribuzione Linux

Le DLL (collegate staticamente) utilizzano un heap diverso rispetto al programma principale?

elenca/trova tutti i file regolari in tutte le sottodirectory esclusi i file binari