sviluppo-web-qa.it

come verificare se è installata una libreria?

In Linux, come posso verificare se una libreria è installata o no? (dalla riga di comando ovviamente).

Nel mio caso specifico ora, voglio verificare se libjpeg è installato.

172
hasen

Per fare ciò in modo indipendente dalla distro * puoi usare ldconfig con grep, in questo modo:

ldconfig -p | grep libjpeg

Se libjpeg non è installato, non ci sarà output. Se è installato, otterrai una linea per ogni versione disponibile.

Sostituisci libjpeg con qualsiasi libreria desideri e disponi di un modo generico e indipendente dalla distribuzione * di verificare la disponibilità della libreria.

Se per qualche motivo il percorso di ldconfig non è impostato, puoi provare a invocarlo usando il suo percorso completo, di solito /sbin/ldconfig.

** 99% delle volte *

222
faken

Puoi verificare con il gestore dei pacchetti della tua distribuzione (aptitude, yum, ...) ma poiché non hai dato la tua distribuzione, non posso darti il ​​comando giusto.

Un altro modo può essere quello di eseguire gcc -ljpeg, se ottieni 'ld: libreria non trovata per -ljpeg' significa che gcc non ha trovato la libreria (ma non significa che non sia installata), se ottieni qualcosa come 'Simboli indefiniti: "_main" , referenziato da: ... 'significa che libjpeg è stato trovato.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* sono un altro modo per scoprire se la lib è installata nel sistema

Esistono molti altri modi per verificare che, se ci dai più contesto (perché è necessario verificare se libjpeg è installato), possiamo darti la soluzione migliore per il tuo caso specifico.

34
radius

Uso l'utilità whereis.

Campione:

[email protected]:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la
17
lifchicker

Io uso questo:

gcc -lpng

Quando la lib è installata, produce:

undefined reference to 'main'

Quando la libreria è not installata:

cannot find -lpng
12
AndreLDM

Per la distribuzione basata su deb puoi farlo

dpkg -s packagename

O se conosci solo il nome del file, usa

locate filename

Il nome del file è di solito libsomething.so [.version].

9
Kim

Sui sistemi basati su Redhat, è possibile utilizzare pkg-config per verificare se una libreria è installata o meno. Molti binari rpm eseguono effettivamente gli stessi controlli prima di procedere con l'installazione, quindi possiamo ragionevolmente fare affidamento sulla sua veridicità.

pkg-config --cflags jpeg

pkg-config --libs jpeg

pkg-config --cflags "jpeg >= 1.0.0" # for version check
pkg-config  --modversion jpeg | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }' #version check
4
Saasira

Questo viene fatto continuamente dagli strumenti di configurazione su Linux.

Guarda questo Tutorial su autoconf e KDevelop .

Altri trucchi userebbero comandi come ldconfig e dpkg.

2
nik

Puoi anche provare a usare dpkg per verificare se è installato.

dpkg --list | grep [some_key_words_of_your_lib]

Inoltre, su CentOS, puoi provare questo.

rpm -qa [lib_name]

1
Scott Yang