Wie überprüfe ich, ob eine Bibliothek installiert ist?


167

Wie überprüfe ich unter Linux, ob eine Bibliothek installiert ist oder nicht? (Von der Kommandozeile natürlich).

In meinem speziellen Fall möchte ich jetzt überprüfen, ob libjpeg installiert ist.


Welche Distribution benutzt du?
Radius

Antworten:


210

Um dies auf eine distro-unabhängige * Art und Weise zu tun, können Sie ldconfig mit grep wie folgt verwenden:

ldconfig -p | grep libjpeg

Wenn libjpeg nicht installiert ist, erfolgt keine Ausgabe. Wenn es installiert ist, erhalten Sie eine Zeile für jede verfügbare Version.

Ersetzen Sie libjpeg durch eine beliebige Bibliothek, und Sie haben eine allgemeine, von der Distribution unabhängige * Möglichkeit, die Verfügbarkeit der Bibliothek zu überprüfen.

Wenn der Pfad zu ldconfig aus irgendeinem Grund nicht festgelegt ist, können Sie versuchen, ihn normalerweise mit dem vollständigen Pfad aufzurufen /sbin/ldconfig.

** 99% der Zeiten *


2
Dies sollte als Antwort akzeptiert werden. Toll!

1
Es ist nicht möglich, damit nach der Dev-Version (Headern) einer Bibliothek zu suchen, oder?
Andig

2
Können Sie 99% mal angeben ? bash: ldconfig: command not foundauf Debian x64 Jessie mit xfce! Dies ist die empfohlene Debian-Veröffentlichung auf der Debian-Website ...
Tomáš Zato,

4
@ TomášZato: ldconfigist nicht verfügbar (wird angezeigt command not found), wenn Sie versuchen, es auszuführen, ohne Superuser zu sein.
Gauthier

2
/sbin/ldconfig -pfunktioniert bei mir ohne root sein zu müssen.
Pedro Gimeno

34

Sie können beim Paketmanager Ihrer Distribution nachfragen (aptitude, yum, ...), aber da Sie Ihre Distribution nicht angegeben haben, kann ich Ihnen nicht den richtigen Befehl geben.

Eine andere Möglichkeit ist gcc -ljpeg, 'ld: library not found for -ljpeg' auszuführen. Dies bedeutet, dass gcc die Bibliothek nicht gefunden hat (dies bedeutet jedoch nicht, dass sie nicht installiert ist), wenn Sie so etwas wie 'Undefinierte Symbole' erhalten : "_main", referenziert von: ... 'bedeutet, dass libjpeg gefunden wurde.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* sind eine andere Möglichkeit, um festzustellen, ob die lib im System installiert ist

Es gibt viele andere Möglichkeiten, dies zu überprüfen. Wenn Sie uns mehr Kontext angeben (warum müssen Sie überprüfen, ob libjpeg installiert ist), können wir Ihnen die beste Lösung für Ihren speziellen Fall anbieten.


Wie finde ich es mit aptitude?
BBK

17

Ich benutze das Dienstprogramm whereis .

Stichprobe:

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

11

Ich benutze das:

gcc -lpng

Wenn die lib installiert ist, ergibt sich:

undefined reference to 'main'

Wenn die lib nicht installiert ist:

cannot find -lpng

9

Für deb-basierte Distribution können Sie dies tun

dpkg -s packagename

Oder wenn Sie nur den Dateinamen kennen, verwenden Sie

locate filename

Der Dateiname lautet normalerweise libsomething.so [.version].


1
Der Dateiname kann auch so etwas wie "libsomething.a" für die statische Version sein.
Radius

Ich finde dpkg -sin der Nützlichkeit eingeschränkt, weil es den tatsächlichen Paketnamen will, der sich subtil oder signifikant von der Bibliothek selbst unterscheiden kann. Ich benutzedpkg -s|grep LIBRARY
Drew Stephens

2
@ Dinomite Apt-Datei ist dein Freund :)
Radius

4

Auf Redhat-basierten Systemen kann mit pkg-config überprüft werden, ob eine Bibliothek installiert ist oder nicht. Viele rpm-Binärdateien führen die gleichen Überprüfungen durch, bevor Sie mit der Installation fortfahren, sodass wir uns vernünftigerweise auf deren Richtigkeit verlassen können.

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


1

Sie können auch versuchen, mit dpkg zu überprüfen, ob es installiert ist.

dpkg --list | grep [some_key_words_of_your_lib]

Außerdem können Sie dies unter CentOS ausprobieren.

rpm -qa [lib_name]


Hinweis: Funktioniert nur für Debian-basierte Distributionen
ALex_hha

@ALex_hha Ja, danke, das sollte hervorgehoben werden. Verwenden Sie pkg-configstattdessen CentOS oder Red Hat-basierte Systeme .
Scott Yang
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.