Lavorando su sistemi Linux based, si interagisce costantemente con file eseguibili sia da terminale che da GUI. Ogni eseguibile può necessitare di librerie che sono file condivisi e riutilizzati da molteplici programmi. Su Windows queste hanno tipicamente estensione .dll, mentre in Linux sono solitamente file con estensione .o o .so.
Questa guida mostra come utilizzare la command line utility ldd per visualizzare l’elenco delle dipendenze di un eseguibile.
What is ldd
Ldd è un potente tool a riga di comando che permette di visualizzare tutte le librerie da cui dipende l’eseguibile.
In Linux i file di libreria sono comunemente collocati nei percorsi /lib o /usr/lib. Le librerie sono sostanzialmente dei pacchetti di codice che aiutano gli sviluppatori a salvare tempo richiamando funzioni preconfezionate e sgravandoli così dal dover “reinventare la ruota” ad ogni sviluppo.
Ci sono due tipi di librerie:
- Librerie statiche (Static libraries)
- Librerie dinamiche (Dynamic or Shared libraries)
Come installare ldd
Generalmente ldd è disponibile preinstallato in quasi tutte le distribuzioni Linux, ma nel caso non dovesse esserlo, si può procedere all’installazione con questo comando
apt install libc-bin
Sintassi di base di ldd
La sintassi generale per il comando ldd è piuttosto semplice. Di default l’esecuzione del comando mostra in output l’elenco delle dipendenze
ldd [options] executable
Per esempio per mostrare le dipendenze del binario bash, il comando è il seguente
ldd /bin/bash
Options del comando ldd
Per modificare il comportamento del comando possiamo utilizzare le seguenti opzioni:
- -v – Verbose mode, che stampa tutte le informazioni
- -u – Mostra le dipendenze dirette inutilizzate
- -d – Esegue una data relocation e mostra gli ELF mancanti
- -r – Esegue una data and function relocation e mostra gli ELF e le funzioni mancanti