116 votes

Variable d'environnement PKG_CONFIG_PATH

Pensez à ajuster la variable d'environnement PKG_CONFIG_PATH si vous installé un logiciel dans un préfixe non standard.

Qu'est-ce que cela signifie ?

109voto

devav2 Points 33862

PKG_CONFIG_PATH est une variable d'environnement qui spécifie des chemins supplémentaires dans lesquels pkg-config cherchera ses fichiers .pc.

Cette variable est utilisée pour augmenter le chemin de recherche par défaut de pkg-config. Sur un système Unix typique, il cherchera dans les répertoires /usr/lib/pkgconfig y /usr/share/pkgconfig . Cela couvre généralement les modules installés par le système. Cependant, certains modules locaux peuvent être installés dans un préfixe différent tel que /usr/local . Dans ce cas, il est nécessaire de faire précéder le chemin de recherche pour que pkg-config puisse localiser les fichiers .pc.

El pkg-config est utilisé pour récupérer des informations sur l'installation installées dans le système. L'utilisation principale de pkg-config est de fournir les détails nécessaires pour compiler et lier un programme à une bibliothèque. Ces métadonnées sont stockées dans des fichiers pkg-config. Ces fichiers ont le suffixe .pc et se trouvent dans des emplacements spécifiques connus de l'outil pkg-config.

Pour vérifier le PKG_CONFIG_PATH utiliser cette commande :

echo $PKG_CONFIG_PATH

Pour régler le PKG_CONFIG_PATH utilisation de la valeur :

export PKG_CONFIG_PATH=/usr/lib/pkgconfig

ou

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

60voto

GrandAdmiral Points 743

Pour voir où pkg-config (version 0.24 ou ultérieure) recherche les bibliothèques installées par défaut, utilisez la commande suivante :

pkg-config --variable pc_path pkg-config

Pour ajouter à ce chemin, définissez l'option PKG_CONFIG_PATH variable d'environnement. Le fichier de manuel indique PKG_CONFIG_PATH est :

Une liste séparée par deux points (sous Windows, par un point-virgule) de répertoires dans lesquels rechercher les fichiers .pc. Le répertoire par défaut sera toujours sera toujours recherché après la recherche dans le chemin d'accès ; la valeur par défaut est libdir/pkgconfig:datadir/pkgconfig où libdir est le répertoire où se trouve pkg-config et datadir est le datadir où pkg-config a été installé.

41voto

Ian Martin Points 511

La première réponse n'est pas suffisamment explicite sur le plan technique. A partir de la page de manuel (ouvrir un terminal, taper man pkg-config ) :

pkg-config récupère des informations sur les paquets à partir de fichiers de métadonnées spéciaux. Ces fichiers sont nommés d'après le paquet, et ont un nom de fichier .pc extension. Sur la plupart des systèmes, pkg-config regarde /usr/lib/pkgconfig , /usr/share/pkgconfig , /usr/local/lib/pkgconfig y /usr/local/share/pkgconfig pour ces fichiers. Il cherchera également dans la liste des répertoires spécifiés par le fichier des répertoires spécifiés par l'option PKG_CONFIG_PATH variable d'environnement.

Ainsi, le pkg-config n'est pas dans le PKG_CONFIG_PATH Toutefois, si vous installez une bibliothèque, pour obtenir les informations permettant de l'utiliser dans un répertoire automake script pour être accessible il doit être dans un répertoire pkg-config est au courant.

10voto

Jonathan Watmough Points 744

Vous essayez de construire un logiciel, disons Widget. Widget s'appuie sur une autre bibliothèque, libcog pour les besoins de l'argumentation. Le processus de construction de Widget (probablement un configure script) utilise pkg-config pour déterminer comment utiliser libcog. pkg-config ne sait rien de libcog.

Si libcog n'est pas installé, c'est votre problème. Il y a de fortes chances qu'une installation standard de libcog corrige le problème. En fonction de votre système, il se peut que vous deviez installer une version "développeur" supplémentaire du paquetage ; elle comporte souvent "-devel" ou "-dev" à la fin, donc si vous installez "libcog", vous devrez peut-être aussi installer "libcog-devel".

Si libcog est installée, elle n'est probablement pas installée de manière à ce que pkg-config puisse la trouver. Il y a probablement un fichier libcog.pc quelque part sur votre système. Pour les besoins de l'argumentation, il se trouve à /opt/cog/lib/pkgconfig/libcog.pc. Dans ce cas, vous pouvez le signaler à pkg-config en définissant le PKG_CONFIG_PATH sur le répertoire contenant libcog.pc. Donc dans un Shell Bourne ou similaire, quelque chose comme

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/cog/lib/pkgconfig/

Une fois que c'est fait, ré-exécuter la commande qui a échoué devrait fonctionner.

Si libcog est installé, y compris les bibliothèques et les fichiers d'en-tête, et que vous n'avez pas de fichier libcog.pc, les choses se passent mal. On peut supposer qu'une installation standard de libcog inclut cette information, sinon Widget ne s'y fierait pas. Je commencerais par réinstaller libcog. Il est possible de créer manuellement le fichier libcog.pc, mais le faire correctement est difficile et très spécifique à une bibliothèque donnée.

9voto

possumkeys Points 191

J'ai regardé la page du manuel sur mon système 64 bits et je me suis un peu perdu. Il est dit en une ligne :

pkg-config récupère des informations sur les paquets à partir de fichiers spéciaux. fichiers de métadonnées spéciaux. Ces fichiers sont nommés d'après le paquetage, avec l'extension .pc. Par défaut, pkg-config recherche ces fichiers dans le répertoire prefix/lib/pkgconfig. préfixe/lib/pkgconfig pour ces fichiers ; il cherchera aussi dans le répertoire la liste séparée par deux points (sous Windows, séparée par un point-virgule) du répertoire répertoires spécifiés par la variable d'environnement PKG_CONFIG_PATH. d'environnement PKG_CONFIG_PATH.

J'avais supposé qu'il cherchait toujours dans les répertoires lib/pkgconfig. Il s'avère que ce sont les répertoires eux-mêmes. Dans mon cas, j'essayais de compiler le tutoriel gtk hello world. Je localise le fichier que je veux, par exemple

locate gtk | grep '\.pc'

Parmi les résultats, citons :

/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc

Finalement, il fallait faire une exportation.

export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X