Pkg-config
| pkg-config | |
| Développeur | Tollef Fog Heen / freedesktop.org |
|---|---|
| Écrit en | C |
| Environnements | de type Unix |
| Type | outil de développement |
| Licences | GNU GPL |
| Site web | pkg-config.freedesktop.org |
| modifier |
|
pkg-config est un logiciel qui fournit une interface unifiée pour interroger les bibliothèques installées lors de la compilation de code source qui utilise une de ces bibliothèques.
Il a été conçu à l'origine pour Linux, mais est aujourd'hui également disponible pour divers BSDs, pour Microsoft Windows, Mac OS X et Solaris.
pkg-config fournit diverses informations au sujet des bibliothèques installées. Ces informations peuvent comprendre :
- des paramètres pour un compilateur C ou C++
- des paramètres pour l'éditeur de liens
- la version de la bibliothèque en question
- indique la présence des bibliothèques installées ou pas avec un intervalle de version requis
[modifier] Fonctionnement
Quand une bibliothèque est installée (à partir d'un RPM, d'un deb, ou d'un autre système d'empaquetage de binaire), un fichier .pc est installé dans un certain répertoire prévu à cet effet (l'emplacement de ce répertoire dépend du système et devrait être indiqué dans la page de man de pkg-config).
Ce fichier comprend plusieurs entrées. Les différentes entrées classiques que l'on peut y trouver sont les paramètres nécessaires pour compiler avec la bibliothèque, l'emplacement des fichiers d'en-tête, la version et une description.
Voici un exemple de fichier .pc pour la libpng (qui sous Linux devrait se trouver a l'emplacement /usr/lib/pkgconfig/libpng.pc) :
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib
includedir=/usr/include/libpng12
Name: libpng12
Description: Loads and saves PNG files
Version: 1.2.31
Libs: -L${libdir} -lpng12
Libs.private: -lz -lm
Cflags: -I${includedir}
Ce fichier nous indique ainsi que la bibliothèque peut être trouvée dans /usr/lib et les en-têtes dans /usr/include/libpng12, que son nom est libpng12 et sa version 1.2.31. Il fournit aussi les paramètres nécessaire pour compiler avec cette bibliothèque.
Voici un exemple d'utilisation de pkg-config lors de la compilation :
gcc -o test test.c $(pkg-config --libs --cflags libpng)
Parfois lors de l'installation d'une bibliothèque à partir de ses sources il n'y a pas de fichier .pc d'installé et l'utilisateur devra créer ce fichier s'il veut pouvoir utiliser pkg-config pour compiler avec cette bibliothèque.