GNU/Linux >> Linux Esercitazione >  >> Linux

Come elencare le librerie condivise utilizzate dagli eseguibili in Linux

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//maps il file verrà trasformato in /proc/45261/maps . Ora possiamo combinare questo file con awk comando per recuperare Fiamma librerie condivise eseguibili come illustrato di seguito.

$ 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.


Linux
  1. Come gestire ed elencare i servizi in Linux

  2. Introduzione alle librerie condivise Linux (come creare librerie condivise)

  3. Come mostrare tutte le librerie condivise utilizzate dagli eseguibili in Linux?

  4. Rimozione delle librerie condivise di Linux

  5. Come elencare i processi collegati a un segmento di memoria condivisa in Linux?

Come elencare i pacchetti installati in Linux

Come elencare le partizioni del disco in Linux

Come elencare i membri di un gruppo in Linux

Come elencare gli utenti in Linux

Come elencare i dischi su Linux

Come elencare i servizi su Linux