Pkg-config
# Pkg-config

pkg-config (von engl. package, „Paket“ und config, „Konfiguration“) ist ein Computerprogramm, das eine einheitliche Schnittstelle zur Abfrage von Metadaten über beliebige Software bereitstellt. pkg-config wird in erster Linie für die Versionsverwaltung installierter Programmbibliotheken eingesetzt und liefert dabei zum Beispiel Informationen über

* die Versionsnummer der Programmbibliothek,
* die für den C- oder C++-Compiler oder Software-Dokumentationswerkzeuge benötigten Parameter sowie
* Parameter für den Linker.

Mit den Informationen, die aus der Abfrage resultieren, können beispielsweise ausführbare Programme aus Quelltext übersetzt (kompiliert) werden. pkg-config wurde ursprünglich für Unix entwickelt, steht heute aber auch für andere Betriebssysteme wie Microsoft Windows zur Verfügung.

## Geschichte und Bedeutung

Im Juni 2000 veröffentlichte der Gnome-Entwickler James Henstridge den Vorgänger gnome-config in Form eines Shell-Skripts, der mit hartkodierten Werten nur begrenzt erweiterbar und lediglich für Gnome selbst benutzbar war. Einen Monat später wurde pkg-config von Havoc Pennington in die Programmiersprache C übersetzt, die Umstellung konnte im Oktober 2000 abgeschlossen werden. Seit Juni 2002 wird vom GNOME-Projekt ausschließlich pkg-config eingesetzt. Seit Dezember 2005 ist auch das X.Org-Projekt vollständig auf die Benutzung von pkg-config umgestellt.

pkg-config hat sich ausgehend von Gnome über verschiedene Einzelbibliotheken bis zu X.Org zu einem Quasi-Standard entwickelt und wird von vielen Softwareprojekten unter verschiedenen Betriebssystemen eingesetzt. Bekannte Projekte wie Mozilla Firefox nutzen es, um einerseits Metadaten zuvor installierter Bibliotheken abzufragen und andererseits Metadaten über die eigenen Bibliotheken zur Verfügung zu stellen. pkg-config soll paketspezifische Konfigurationsskripte ablösen.

## Arbeitsweise

Während der Installation einer Programmbibliothek (zum Beispiel über RPM oder dpkg) wird eine Datei mit der Namenserweiterung .pc in einem distributionsabhängigen, über die Umgebungsvariable PKG_CONFIG_PATH bekannt gegebenen Verzeichnis abgelegt. Darin finden sich die Versionsnummer, die Dateisystem-Pfade zu den entsprechenden Kopf- (fachsprachlich Header-) und Bibliotheksdateien (fachsprachlich Library), Compiler- und Linker-Schalter und weitere Paketinformationen. Diese Informationen werden zur Kompilation derjenigen Programme herangezogen, die diese Bibliotheken verwenden.

