Überlegen Sie, ob Sie die Umgebungsvariable PKG_CONFIG_PATH anpassen möchten, wenn Sie Software in einem nicht standardmäßigen Präfix installiert haben. Was bedeutet das ?
pkg-config
MKJ
quelle
quelle
Antworten:
PKG_CONFIG_PATH
ist eine Umgebungsvariable, die zusätzliche Pfade angibt, in denenpkg-config
nach ihren .pc-Dateien gesucht wird.Diese Variable wird verwendet, um den Standardsuchpfad von pkg-config zu erweitern. Auf einem typischen Unix-System wird in den Verzeichnissen
/usr/lib/pkgconfig
und gesucht/usr/share/pkgconfig
. Dies gilt normalerweise für vom System installierte Module. Einige lokale Module können jedoch in einem anderen Präfix installiert sein, z/usr/local
. In diesem Fall muss der Suchpfad vorangestellt werden, damit pkg-config die .pc-Dateien finden kann.Das
pkg-config
Programm wird zum Abrufen von Informationen zu installierten Bibliotheken im System verwendet. Der Hauptzweck vonpkg-config
ist, die notwendigen Details zum Kompilieren und Verknüpfen eines Programms mit einer Bibliothek bereitzustellen. Diese Metadaten werden in pkg-config-Dateien gespeichert. Diese Dateien haben das Suffix .pc und befinden sich an bestimmten Orten, die dem pkg-config-Tool bekannt sind.PKG_CONFIG_PATH
Verwenden Sie diesen Befehl, um den Wert zu überprüfen :Um den
PKG_CONFIG_PATH
Wert einzustellen , verwenden Sie:oder
quelle
Die erste Antwort ist technisch nicht explizit genug. Auf der Manpage (öffnen Sie ein Terminal, geben Sie Folgendes ein
man pkg-config
):Das
pkg-config
Programm befindet sich also nicht imPKG_CONFIG_PATH
Verzeichnis. Wenn Sie jedoch eine Bibliothek installieren, ist bekannt, dass die Informationen, die in einemautomake
Skript verwendet werden sollen, in einem Verzeichnis gespeichert sein müssen, damit darauf zugegriffen werden kannpkg-config
.quelle
/usr/local/lib/x86_64-linux-gnu
als automatischer Suchort kostenlos (mit einem leerenPKG_CONFIG_PATH
) eingebunden , und in der Tat viele.pc
Dateien - bemerkenswert, einschließlich GTK + et al. - dort leben. Der Grund dafür ist, die Verfügbarkeit eines Pakets für mehrere Architekturen gleichzeitig zu ermöglichen, wie hier beschrieben: askubuntu.com/questions/449348/…pkg-config
auf dem System suchen: askubuntu.com/a/373217/436580Verwenden Sie den folgenden Befehl, um festzustellen, wo pkg-config (Version 0.24 oder höher) standardmäßig nach installierten Bibliotheken sucht:
Um diesen Pfad zu ändern, legen Sie die
PKG_CONFIG_PATH
Umgebungsvariable fest. Die Man-DateiPKG_CONFIG_PATH
lautet:quelle
echo $(pkg-config --variable pc_path pkg-config)${PKG_CONFIG_PATH:+:}${PKG_CONFIG_PATH}
PKG_CONFIG_PATH
und immer noch standardmäßig durchsuchte Verzeichnisse vorhanden sein können und das Festlegen eines nicht leeren Werts die Standardwerte nicht löscht.Sie versuchen, eine Software zu erstellen, sagen wir Widget. Widget stützt sich aus Gründen der Argumentation auf eine andere Bibliothek, libcog. Der Build-Prozess von Widget (wahrscheinlich ein Konfigurationsskript) verwendet pkg-config, um zu bestimmen, wie libcog verwendet wird. pkg-config weiß nichts über libcog.
Wenn libcog nicht installiert ist, ist das Ihr Problem. Es besteht eine gute Chance, dass eine Standardinstallation von libcog das Problem behebt. Abhängig von Ihrem System müssen Sie möglicherweise eine zusätzliche Entwicklerversion des Pakets installieren. Am Ende steht häufig "-devel" oder "-dev". Wenn Sie also "libcog" installieren, müssen Sie möglicherweise auch "libcog-devel" installieren.
Wenn libcog installiert ist, ist es wahrscheinlich nicht so installiert, dass pkg-config es finden kann. Möglicherweise befindet sich irgendwo auf Ihrem System eine libcog.pc-Datei. Aus Gründen der Argumentation finden Sie diese unter /opt/cog/lib/pkgconfig/libcog.pc. In diesem Fall können Sie pkg-config darüber informieren, indem Sie PKG_CONFIG_PATH auf das Verzeichnis setzen, das libcog.pc enthält. Also in einer Bourne-Shell oder ähnlichem sowas
Sobald dies erledigt ist, funktioniert es hoffentlich, wenn Sie den fehlgeschlagenen Befehl erneut ausführen.
Wenn libcog installiert ist, einschließlich der Bibliotheken und Header-Dateien, und Sie keine libcog.pc-Datei haben, laufen die Dinge schlecht. Vermutlich enthält eine Standardinstallation von libcog die Informationen, sonst würde Widget sich nicht darauf verlassen. Ich würde zuerst die Neuinstallation von libcog untersuchen. Es ist möglich, die Datei libcog.pc manuell zu erstellen, aber es ist schwierig und sehr spezifisch für eine bestimmte Bibliothek.
quelle
Ich habe mir die Manpage auf meinem 64-Bit-System angesehen und war etwas verwirrt. In einer Zeile stand:
Ich hatte angenommen, dass es auch in den Verzeichnissen lib / pkgconfig aussieht. Es stellt sich heraus, die Verzeichnisse selbst. In meinem Fall habe ich versucht, das Hello World GTK-Tutorial zu kompilieren. Ich finde die Datei, die ich möchte, z
Unter den Ergebnissen sind:
Schließlich sollte ein Export erfolgen.
quelle
man
einfach die Seite für moderne Systeme mit mehreren Architekturen ist. Ich war eine Weile verwirrt, weil ich unter Debian 8 x86pkg-config
bereits im Ordner x86_64 nachgeschaut habe (ohne irgendetwas inPKG_CONFIG_PATH
). Ich bin nicht sicher, wie dies aufgenommen wurde, aber die von @GrandAdmiral angezeigte Befehlszeile zeigt an, dass sie durch das--variable pc_path
(irgendwie!) Fürpkg-config
das eigene Paket festgelegte Steuerelement gesteuert wird .Mir scheint, dass die meisten Antworten zu viele Informationen enthalten, als dass sie benötigt werden.
Die Software, die installiert wird, ist möglicherweise (und normalerweise) auf einige Bibliotheken und / oder Header angewiesen, und das System verwendet pkg-config, um diese zu finden.
Sucht also
pkg-config
nach diesen Dateien in vordefinierten (Standard-) Systemverzeichnissen. Diese Ordner sind "Präfix"./usr/local
Zum Beispiel wird von einer Bibliothek mit Präfix erwartet, dass sie Header enthält/usr/local/include
, und die Bibliothek selbst befindet sich in/usr/local/lib
. pkg-config sucht jedoch nach Bibliotheken auch in dem Verzeichnis, das in der Umgebungsvariablen PKG_CONFIG_PATH aufgeführt ist .Wenn Sie dann Software außerhalb der Standardordnerliste installieren, mussten Sie die Liste "anpassen", dh Ihre Verzeichnisse zu PKG_CONFIG_PATH hinzufügen
Für weitere Informationen können Sie hier und hier schauen
quelle
PKG_CONFIG_PATH
Gibt zusätzliche Verzeichnisse an, in denen nur nachyourPkg.pc
(pkg-config
Spezifikations-) Dateien gesucht werden soll. Es hat keine Auswirkungen auf pkg-spezifische Dinge wie Bibliotheks-Suchverzeichnisse.Es bedeutet, dass Sie versuchen, etwas aus dem Quellcode zu erstellen, und nicht alle Abhängigkeiten finden können, die benötigt werden. Das
pkg-config
Skript, mit dem die Entwicklungsdateien für diese Bibliotheken gefunden werden, gibt diese Meldung aus.quelle
Ich habe versucht , die neueste Version von installieren axel und ich lief ,
./configure
und ich habe dies:Also habe ich versucht:
und ich bekam:
Wie offensichtlich, hatte ich openssl installiert (
sudo apt-get install openssl
), aber in der obigen Ausgabe steht, wie Sie sehen können, "No package 'openssl' found". Um sicherzugehen, dass ich es getan habe:Es stellte sich heraus, dass ich auf jeden Fall ein anderes Paket brauche, also habe ich ein bisschen gegoogelt und festgestellt, dass ich dieses Paket installieren musste:
Und all dies hatte nichts mit der Änderung der Umgebungsvariablen pkg-config path zu tun.
quelle
Diejenigen, die https://github.com/confluentinc/confluent-kafka-go verwenden
Bitte folgen Sie der Installation von librdkafka
Jetzt können Sie go install / go run go build verwenden
quelle