ldd(1)

NOME
ldd - stampa le dipendenze degli oggetti condivisi

SINTASSI
ldd [opzione]... file...

DESCRIZIONE
ldd stampa gli oggetti condivisi (librerie condivise) richiesti da ciascun programma od oggetto condiviso specificato sulla riga di comando. Un esempio d'uso e di output è il seguente:

    $ ldd /bin/ls
            linux-vdso.so.1 (0x00007ffcc3563000)
            libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f87e5459000)
            libcap.so.2 => /lib64/libcap.so.2 (0x00007f87e5254000)
            libc.so.6 => /lib64/libc.so.6 (0x00007f87e4e92000)
            libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f87e4c22000)
            libdl.so.2 => /lib64/libdl.so.2 (0x00007f87e4a1e000)
            /lib64/ld-linux-x86-64.so.2 (0x00005574bf12e000)
            libattr.so.1 => /lib64/libattr.so.1 (0x00007f87e4817000)
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f87e45fa000)

Usualmente, ldd invoca il linker dinamico standard (vedere ld.so(8)) e assegna la variabile d'ambiente LD_TRACE_LOADED_OBJECTS impostandola a 1. Questo fa sì che il linker dinamico ispezioni le dipendenze dinamiche del programma, e trovi (in accordo con le regole descritte in ld.so(8)) e carichi gli oggetti che soddisfano quelle dipendenze. Per ogni dipendenza, ldd mostra la posizione dell'oggetto trovato e l'indirizzo (esadecimale) in cui è stato caricato. (Le dipendenze condivise linux-vdso e ld-linux sono speciali; vedi vdso(7) e ld.so(8).)

  Sicurezza
Be aware that in some circumstances (e.g., where the program specifies an ELF interpreter other than ld-linux.so), some versions of ldd may attempt to obtain the dependency information by attempting to directly execute the program, which may lead to the execution of whatever code is defined in the program's ELF interpreter, and perhaps to execution of the program itself. (Before glibc 2.27, the upstream ldd implementation did this for example, although most distributions provided a modified version that did not.)

Perciò, non si dovrebbe mai impiegare ldd su un eseguibile non fidato, poiché può avere come risultato l'esecuzione di codice arbitrario. Un'alternativa più sicura quando si ha a che fare con eseguibili non fidati è:

    $ objdump -p /percorso/del/programma | grep NEEDED

Si noti, comunque, che questa alternativa mostra solo le dipendenze dirette dell'eseguibile, mentre ldd mostra l'intero albero delle dipendenze dell'eseguibile.

OPZIONI

--version
    Stampa il numero di versione di ldd.

-v, --verbose
    Stampa tutte le informazioni, inclusa ad es. la versione.

-u, --unused
    Stampa le dipendenze dirette inutilizzate. (A partire da glibc 2.3.4.)

-d, --data-relocs
    Effettua rilocazioni e riporta ogni oggetto mancante (solo ELF).

-r, --function-relocs
    Effettua rilocazioni sia per oggetti dati che per funzioni, e riporta tutti gli oggetti o funzioni mancanti (solo ELF).

--help
    Informazioni sull'uso.

BUG
ldd non funziona con librerie condivise a.out.

ldd non funziona con alcuni programmi a.out molto vecchi, che sono stati costruiti prima che il supporto di ldd fosse aggiunto alle release del compilatore. Se si usa ldd in uno di questi programmi il programma tenterà di funzionare con argc = 0 e i risultati saranno non prevedibili.

VEDERE ANCHE
pldd(1), sprof(1), ld.so(8), ldconfig(8)

TRADUZIONE
La traduzione italiana di questa pagina di manuale è stata creata da Giulio Daprelà <giulio@pluto.it> e Marco Curreli <marcocurreli@tiscali.it>

Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3 (https://www.gnu.org/licenses/gpl-3.0.html) o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.

Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a pluto-ildp@lists.pluto.it.