web-dev-qa-db-fra.com

comment vérifier si une bibliothèque est installée?

Sous Linux, comment vérifier si une bibliothèque est installée ou non? (à partir de la ligne de commande bien sûr).

Dans mon cas spécifique maintenant, je veux vérifier si libjpeg est installé.

172
hasen

Pour ce faire d'une manière indépendante de la distribution *, vous pouvez utiliser ldconfig avec grep, comme ceci:

ldconfig -p | grep libjpeg

Si libjpeg n'est pas installé, il n'y aura pas de sortie. S'il est installé, vous obtiendrez une ligne pour chaque version disponible.

Remplacez libjpeg par la bibliothèque de votre choix et vous disposez d'un moyen générique indépendant de la distribution * de vérifier la disponibilité de la bibliothèque.

Si, pour une raison quelconque, le chemin d'accès à ldconfig n'est pas défini, vous pouvez essayer de l'invoquer en utilisant son chemin d'accès complet, généralement /sbin/ldconfig.

** 99% des fois *

222
faken

Vous pouvez vérifier avec le gestionnaire de paquets de votre distribution (aptitude, miam, ...) mais comme vous n'avez pas donné votre distribution, je ne peux pas vous donner la bonne commande.

Une autre façon peut être d'exécuter gcc -ljpeg, si vous obtenez 'ld: bibliothèque non trouvée pour -ljpeg' cela signifie que gcc n'a pas trouvé la bibliothèque (mais cela ne signifie pas qu'elle n'est pas installée), si vous obtenez quelque chose comme 'Symboles non définis: "_main" , référencé de: ... 'cela signifie que libjpeg a été trouvé.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* sont un autre moyen de savoir si la bibliothèque est installée dans le système

Il existe de nombreuses autres façons de vérifier que, si vous nous donnez plus de contexte (pourquoi vous devez vérifier si libjpeg est installé), nous pourrions vous donner la meilleure solution pour votre cas spécifique.

34
radius

J'utilise l'utilitaire whereis.

Échantillon:

l1feh4ck3r@xxx:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la
17
lifchicker

J'utilise ceci:

gcc -lpng

Lorsque la lib est installée, elle donne:

undefined reference to 'main'

Quand la lib est pas installée:

cannot find -lpng
12
AndreLDM

Pour une distribution basée sur deb, vous pouvez faire

dpkg -s packagename

Ou si vous ne connaissez que le nom de fichier, utilisez

locate filename

Le nom de fichier est généralement libsomething.so [.version].

9
Kim

Sur les systèmes basés sur Redhat, on peut utiliser pkg-config pour vérifier si une bibliothèque est installée ou non. De nombreux fichiers binaires rpm effectuent en fait les mêmes vérifications avant de procéder à l'installation, nous pouvons donc raisonnablement nous fier à sa véracité.

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

Cela se fait tout le temps par les outils de configuration sur Linux.

Regardez ceci Tutoriel sur autoconf et KDevelop .

D'autres astuces utiliseraient des commandes comme ldconfig et dpkg.

2
nik

Vous pouvez également essayer d'utiliser dpkg pour vérifier s'il est installé.

dpkg --list | grep [some_key_words_of_your_lib]

De plus, sur CentOS, vous pouvez essayer ceci.

rpm -qa [lib_name]

1
Scott Yang