230 votes

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, je veux vérifier si libjpeg est installé.

0 votes

Quelle distribution utilisez-vous ?

307voto

faken Points 2954

Pour faire cela d'une manière indépendante de la distro*, 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. Si elle est installée, 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 complet, habituellement /sbin/ldconfig .

**99% des fois*

2 votes

Cette réponse devrait être acceptée. Très bien !

0 votes

Sauf pour NixOS :-(

1 votes

Il n'est pas possible d'utiliser cela pour vérifier la version dev (headers) d'une bibliothèque, n'est-ce pas ?

36voto

radius Points 9485

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

Un autre moyen peut être d'exécuter gcc -ljpeg Si vous obtenez 'ld : library not found for -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 'Undefined symbols : "_main", référencé à partir de : ...' cela signifie que libjpeg a été trouvé.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* Il existe d'autres moyens de savoir si la librairie est installée sur le système.

Il existe de nombreux autres moyens de vérifier cela, si vous nous donnez plus de contexte (pourquoi vous avez besoin de vérifier si libjpeg est installé) nous pourrions vous donner la meilleure solution pour votre cas spécifique.

21voto

Cody Wright Points 51

J'utilise le où se trouve utilitaire.

Un échantillon :

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

1 votes

Ne fonctionne pas pour moi

17voto

AndreLDM Points 231

J'utilise ceci :

gcc -lpng

Lorsque la librairie est installée, elle donne des résultats :

undefined reference to 'main'

Lorsque le lib est no installé :

cannot find -lpng

15voto

meduz Points 529

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

dpkg -s packagename

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

locate filename

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

1 votes

Le nom du fichier peut également être quelque chose comme "libsomething.a" pour une version statique.

0 votes

Je trouve dpkg -s son utilité est limitée, parce qu'il veut le nom du paquetage, qui peut différer subtilement ou significativement de la bibliothèque elle-même. J'utilise dpkg -s|grep LIBRARY

2 votes

@dinomite apt-file est ton ami :)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X