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. S'il est installé, vous aurez 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 distro *, 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 généralement l'invoquer en utilisant son chemin d'accès complet /sbin/ldconfig.
Cela devrait être accepté comme la réponse. Génial!
1
Ce n'est pas possible de l'utiliser pour vérifier la version dev (les en-têtes) d'une bibliothèque, n'est-ce pas?
andig
2
Pouvez-vous spécifier 99% des temps ? bash: ldconfig: command not foundsur Debian x64 Jessie avec xfce! Ceci est la version recommandée de Debian sur le site web debian ...
Tomáš Zato
4
@ TomášZato: ldconfign'est pas disponible ( command not founds'affiche) si vous essayez de l'exécuter sans être superutilisateur.
Gauthier
2
/sbin/ldconfig -ptravaille pour moi sans avoir besoin d'être root.
Pedro Gimeno
34
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 commande correcte.
Une autre façon peut être de courir gcc -ljpeg, si vous obtenez 'ld: bibliothèque introuvable pour -ljpeg', cela signifie que gcc n'a pas trouvé la bibliothèque (mais cela ne veut pas dire qu'elle n'est pas installée), si vous obtenez quelque chose comme 'Symboles non définis : "_main", référencé depuis: ... 'cela signifie que libjpeg a été trouvé.
locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* existe-t-il 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 cela. 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.
Le nom de fichier peut aussi être quelque chose comme "libsomething.a" pour la version statique.
rayon
Je trouve l’ dpkg -sutilité limitée, car elle veut le nom du paquet lui-même, qui peut différer légèrement ou sensiblement de la bibliothèque elle-même. J'utilisedpkg -s|grep LIBRARY
Drew Stephens
2
@dinomite apt-file est votre ami :)
rayon
4
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. En réalité, de nombreux binaires rpm effectuent les mêmes vérifications avant de procéder à l'installation. Nous pouvons donc raisonnablement compter sur sa véracité.
Réponses:
Pour faire cela d'une manière indépendante de la distro *, vous pouvez utiliser ldconfig avec grep, comme ceci:
Si libjpeg n'est pas installé, il n'y aura pas de sortie. S'il est installé, vous aurez 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 distro *, 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 généralement l'invoquer en utilisant son chemin d'accès complet
/sbin/ldconfig
.** 99% du temps *
la source
bash: ldconfig: command not found
sur Debian x64 Jessie avec xfce! Ceci est la version recommandée de Debian sur le site web debian ...ldconfig
n'est pas disponible (command not found
s'affiche) si vous essayez de l'exécuter sans être superutilisateur./sbin/ldconfig -p
travaille pour moi sans avoir besoin d'être root.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 commande correcte.
Une autre façon peut être de courir
gcc -ljpeg
, si vous obtenez 'ld: bibliothèque introuvable pour -ljpeg', cela signifie que gcc n'a pas trouvé la bibliothèque (mais cela ne veut pas dire qu'elle n'est pas installée), si vous obtenez quelque chose comme 'Symboles non définis : "_main", référencé depuis: ... 'cela signifie que libjpeg a été trouvé.locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg*
existe-t-il 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 cela. 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.
la source
J'utilise l' utilitaire whereis .
Échantillon:
la source
J'utilise ceci:
Quand la lib est installée, cela donne:
Quand la lib n'est pas installée:
la source
Pour la distribution basée sur deb, vous pouvez faire
Ou si vous ne connaissez que le nom du fichier, utilisez
Le nom du fichier est habituellement libsomething.so [.version].
la source
dpkg -s
utilité limitée, car elle veut le nom du paquet lui-même, qui peut différer légèrement ou sensiblement de la bibliothèque elle-même. J'utilisedpkg -s|grep LIBRARY
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. En réalité, de nombreux binaires rpm effectuent les mêmes vérifications avant de procéder à l'installation. Nous pouvons donc raisonnablement compter sur sa véracité.
la source
Ceci est fait par les outils de configuration sur Linux tout le temps.
Regardez ce tutoriel sur autoconf et KDevelop .
D'autres astuces utiliseraient des commandes telles que
ldconfig
etdpkg
.la source
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]
la source
pkg-config
plutôt.