Vraag hoe te controleren of een bibliotheek is geïnstalleerd?


Hoe controleer ik in linux of een bibliotheek is geïnstalleerd of niet? (van de commandoregel natuurlijk).

In mijn specifieke geval nu, wil ik controleren of libjpeg is geïnstalleerd.


139
2017-08-16 16:02


oorsprong


Welke distributie gebruikt u? - radius


antwoorden:


Om dit op een distro-onafhankelijke * manier te doen, kun je ldconfig met grep gebruiken, zoals dit:

ldconfig -p | grep libjpeg

Als libjpeg niet is geïnstalleerd, is er geen uitvoer. Als het is geïnstalleerd, krijgt u een regel voor elke beschikbare versie.

Vervang libjpeg door elke gewenste bibliotheek en je hebt een generieke, distro-onafhankelijke * manier om te controleren of de bibliotheek beschikbaar is.

Als om een ​​of andere reden het pad naar ldconfig niet is ingesteld, kunt u proberen het pad meestal op het volledige pad aan te roepen /sbin/ldconfig.

** 99% van de keren *


174
2018-06-06 22:19



Dit moet als het antwoord worden geaccepteerd. Super goed!
Het is niet mogelijk om dit te gebruiken voor het controleren van de dev-versie (headers) van een bibliotheek, toch? - andig
Kunt u specificeren 99% keer? bash: ldconfig: command not found op Debian x64 Jessie met xfce! Dit is de aanbevolen debian-release op de Debian-website ... - Tomáš Zato
@ TomášZato: ldconfig is niet beschikbaar (command not found verschijnt) als je het probeert uit te voeren zonder superuser te zijn. - Gauthier
/sbin/ldconfig -p werkt voor mij zonder root te hoeven zijn. - Pedro Gimeno


Je kunt bij de pakketbeheerder van je distributie (aptitude, yum, ...) navragen, maar omdat je je distributie niet hebt gegeven, kan ik je niet de juiste opdracht geven.

Een andere manier kan zijn om te rennen gcc -ljpeg, als u 'ld: bibliotheek niet gevonden voor -ljpeg' heeft, betekent dit dat gcc de bibliotheek niet heeft gevonden (maar dit betekent niet dat deze niet is geïnstalleerd), als u zoiets als 'Undefined symbols: "_main" krijgt, verwezen from: ... 'het betekent dat libjpeg is gevonden.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* zijn een andere manier om te vinden of de lib in het systeem is geïnstalleerd

Er is nog een andere manier om te controleren of, als u ons meer context geeft (waarom u moet controleren of libjpeg is geïnstalleerd) wij u de beste oplossing voor uw specifieke geval zouden kunnen geven.


32
2017-08-16 16:16



Hoe het te vinden met behulp van aptitude? - BBK


Ik ben gebruik waar is nut.
Monster:

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

15
2017-08-17 01:00





Voor deb-gebaseerde distributie die u kunt doen

dpkg -s packagename

Of gebruik alleen als u de bestandsnaam kent

locate filename

De bestandsnaam is meestal libsomething.so [.version].


8
2017-08-16 16:28



De bestandsnaam kan ook iets zijn als "libsomething.a" voor een statische versie. - radius
ik vind dpkg -s beperkt in hulpprogramma, omdat het de daadwerkelijke pakketnaam wil, die op subtiele of significante wijze kan verschillen van de bibliotheek zelf. ik gebruik dpkg -s|grep LIBRARY - Drew Stephens
@dinomite apt-bestand is je vriend :) - radius


Ik gebruik dit:

gcc -lpng

Wanneer de lib is geïnstalleerd, levert dit:

undefined reference to 'main'

Wanneer de lib is niet geïnstalleerd:

cannot find -lpng

8
2018-03-31 14:50





Op op Redhat gebaseerde systemen kan men pkg-config gebruiken om te verifiëren of een bibliotheek is geïnstalleerd of niet. Veel rpm-binaire bestanden maken eigenlijk dezelfde controles voordat ze met de installatie beginnen, dus we kunnen redelijkerwijs vertrouwen op de waarachtigheid ervan.

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

3
2018-02-07 09:35





Dit wordt altijd gedaan door configuratiehulpmiddelen op Linux.

Kijk hiernaar Tutorial over autoconf en KDevelop.

Andere trucs zouden commando's zoals gebruiken ldconfig en dpkg.


1
2017-08-16 16:11





U kunt ook proberen dpkg te gebruiken om te controleren of het is geïnstalleerd.

dpkg --list | grep [some_key_words_of_your_lib]


0
2017-10-25 08:09



Opmerking: werkt alleen voor op Debian gebaseerde distributies - ALex_hha