pkg-config auf dem Mac findet keine Bibliotheken

7

Ich habe in letzter Zeit eine Reihe von Bibliotheken aus den GNOME-Quellen auf dem Mac installiert. Sie verwenden pkg-config.

Jedes Mal, wenn ich eine Konfiguration ausführe, wird beanstandet, dass die Bibliothek XYZ, die ich in / usr / local / lib installiert habe, nicht gefunden werden kann. Die einzige Möglichkeit, den Konfigurationsprozess abzuschließen, besteht darin, die Pakete mit MacPorts neu zu installieren.

Wie kann ich pkg-config dazu bringen, die Standardeinstellung / usr / local / lib anzuzeigen? Das Festlegen von PKG_CONFIG_PATH scheint nicht zu funktionieren.

Ryan Rosario
quelle

Antworten:

6

Ich habe das herausgefunden. Anscheinend erstellen Pakete, die pkg-config verwenden, eine PC-Datei im Verzeichnis der höchsten Ebene, die erstellt wird, nachdem der Quellcode für Bibliothek Y freigegeben wurde.

Wenn sich die Bibliothek Z beschwert, dass sie die Bibliothek Y nicht finden kann und pkg-config verwendet, setzen Sie die Variable PKG_CONFIG_PATH so, dass sie auf das Verzeichnis verweist, das die PC-Datei enthält.

In meinem Fall basiert libxml ++ auf libxml2. Wenn ich also libxml ++ konfiguriere, muss ich den Pfad auf die von libxml2 erstellte .pc-Datei verweisen:

export PKG_CONFIG_PATH=/Users/ryan/SVN/packages/libxml2-2.7.3/

Dann funktioniert configure richtig.

Ryan Rosario
quelle
seltsam, wie das funktionieren würde, da .pc eine Datei ist, kein Pfad? aber es funktioniert für dann super. Stuart
Stuart Brand
2
Tatsächlich besteht die richtige Notation darin, das enthaltende Verzeichnis anzugeben, nicht den Dateinamen selbst.
Ypnos
3

Sie müssen PKG_CONFIG_PATH genau auf die Position der Bibliothek festlegen, z. B. xyz.so befindet sich nicht in / usr / lib, sondern in / usr / lib / xyz, sodass Sie den Pfad erweitern müssen, um sie einzuschließen ...

export PKG_CONFIG_PATH = $PKG_CONFIG_PATH:/usr/lib/xyz

Stuart

Stuart Brand
quelle
Pfui. Wenn es also mehrere solcher Bibliotheken gibt, müsste ich den Pfad zu jeder dieser Bibliotheken einzeln angeben?
Ryan Rosario
Ja. Auf einem typischen Unix-System würde der Benutzer alle benutzerdefinierten Bibliotheken an einem einzigen Speicherort installieren, z. B. / usr / local / oder ~ / lib. Dann wäre pkgconfig bequemer zu verwenden;)
ypnos