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.
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.
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.
Antworten:
Um dies auf eine distro-unabhängige * Art und Weise zu tun, können Sie ldconfig mit grep wie folgt verwenden:
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 *
quelle
bash: ldconfig: command not found
auf Debian x64 Jessie mit xfce! Dies ist die empfohlene Debian-Veröffentlichung auf der Debian-Website ...ldconfig
ist nicht verfügbar (wird angezeigtcommand not found
), wenn Sie versuchen, es auszuführen, ohne Superuser zu sein./sbin/ldconfig -p
funktioniert bei mir ohne root sein zu müssen.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 istEs 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.
quelle
Ich benutze das Dienstprogramm whereis .
Stichprobe:
quelle
Ich benutze das:
Wenn die lib installiert ist, ergibt sich:
Wenn die lib nicht installiert ist:
quelle
Für deb-basierte Distribution können Sie dies tun
Oder wenn Sie nur den Dateinamen kennen, verwenden Sie
Der Dateiname lautet normalerweise libsomething.so [.version].
quelle
dpkg -s
in 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
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.
quelle
Dies wird von den Konfigurationstools unter Linux ständig durchgeführt.
Schauen Sie sich dieses Tutorial über Autoconf und KDevelop an .
Andere Tricks würden Befehle wie
ldconfig
und verwendendpkg
.quelle
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]
quelle
pkg-config
stattdessen CentOS oder Red Hat-basierte Systeme .