In un ambiente con sistema operativo Linux, gli eseguibili binari associati alle applicazioni/programmi che si desidera eseguire sono direttamente collegati alle librerie condivise caricate in fase di esecuzione.
Come utente Linux curioso e in evoluzione, sarai tentato di farti un'idea su queste librerie condivise coinvolte/collegate con gli eseguibili binari che stai eseguendo durante un normale avvio del programma.
Questo articolo ci guiderà attraverso diversi approcci per scoprire tutte le librerie condivise utilizzate dagli eseguibili in Linux.
Breve panoramica sulle librerie Linux
Un programmatore o un utente che ha familiarità con il mondo della programmazione definirà una libreria come pezzi/segmenti di codice precompilati messi insieme in modo/formato organizzato. La natura/attributo precompilato di una libreria la rende flessibile e facilmente riutilizzabile tra diversi programmi.
Nell'architettura del sistema operativo Linux, possiamo classificare le librerie come statiche (librerie statiche ) o condiviso (librerie condivise ).
Le librerie statiche sono legate staticamente a un programma specifico e sono accessibili solo durante il tempo di compilazione del programma. Le librerie condivise diventano attive una volta avviato un programma e risiedono in memoria durante la durata del runtime del programma.
Come trovare le librerie condivise di un programma in Linux
Prima di determinare le librerie condivise associate al tuo programma di destinazione, devi prima sapere dove risiede l'eseguibile associato al tuo programma. In Linux, la posizione degli eseguibili dei tuoi programmi è solitamente all'interno di /usr/bin directory.
$ ls -l /usr/bin

La colonna all'estrema destra elenca i nomi degli eseguibili dei tuoi programmi.
Trova le librerie condivise del programma Linux usando il comando ldd
Il ldd comando esiste come un semplice script di shell che punta alle librerie condivise di un programma. Come per l'acquisizione dello schermo sopra, proviamo ad esempio a produrre le librerie condivise associate all'applicazione anydesk.
Potremmo determinare la posizione dell'eseguibile di Anydesk con il comando:
$ whereis anydesk
Per determinare le sue librerie condivise tramite il ldd comando, eseguiremo:
$ ldd /usr/bin/anydesk

Come puoi vedere, abbiamo un elenco di numerose librerie associate a anydesk applicazione. Tieni presente che il ldd comando tende a eseguire programmi interrogati per recuperare informazioni sulle librerie condivise. Pertanto, associa il comando solo a eseguibili affidabili.
Trova librerie condivise di programmi utilizzando i comandi objdump e grep
Il objdump comando che fa parte di GNU Binutils il pacchetto si concentrerà sulla visualizzazione delle informazioni sui file oggetto mentre grep comando elencherà le librerie condivise associate al programma.
Vediamo cosa produrranno questi comandi per un programma come whois utilizzato per le informazioni sui nomi di dominio.
$ whereis whois

Quindi, scopri le librerie condivise del programma.
$ objdump -p /usr/bin/whois | grep 'NEEDED'

Come puoi vedere, il whois l'eseguibile del programma di ricerca del dominio è associato a due librerie condivise.
In alternativa, puoi anche utilizzare il readalf comando per recuperare le informazioni condivise per l'eseguibile del programma zip.
$ whereis zip $ readelf --dynamic /usr/bin/zip | grep NEEDED

Come per l'output, il zip programma eseguibile è associato a due librerie condivise.
Trova librerie condivise usando il comando Awk
Questa opzione è ideale per un programma già in esecuzione. Per prima cosa dobbiamo ottenere il suo PID (ID processo ). Ad esempio, supponiamo di avere il Fiamma utilità di cattura dello schermo in esecuzione.
Per ottenere il suo PID , eseguiremo:
$ pgrep flameshot 45261
Il nostro /proc/
$ awk '$NF!~/\.so/{next} {$0=$NF} !a[$0]++' /proc/45261/maps

Ora conosciamo bene l'elenco di tutte le librerie condivise associate agli eseguibili del programma in Linux.