Linux glib a besoin de pkg-config et pkg-config a besoin de glib?

J'essaie d'installer udev. Et udev me donne une erreur pendant le ./configure

--exists: command not found configure: error:
pkg-config and "glib-2.0 >= 2.16" not found, please set GLIB_CFLAGS and GLIB_LIBS
to the correct values or pass --with-internal-glib to configure 

Ok, pkg-config et glib-2.0 sont manquants.

Au début, j'ai essayé d'installer pkg-config. J'ai eu ce message:

checking whether to list both direct and indirect dependencies... no
checking for Win32... no
checking if internal glib should be used... no
checking for pkg-config... no
./configure: line 13557: --exists: command not found
configure: error: pkg-config and "glib-2.0 >= 2.16" not found,
please set GLIB_CFLAGS and GLIB_LIBS to the correct values or 
pass --with-internal-glib to configure

Ok j'interprète, ce glib est manquant.

Prochaine étape d'installation de Glib.

Et j'ai reçu ce message:

configure: error: in `/root/glib-2.33.3':
configure: error: The pkg-config script could not be found or is too old.  Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.

Alternatively, you may set the environment variables LIBFFI_CFLAGS
and LIBFFI_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Mais je suis perplexe maintenant. Ont-ils besoin les uns des autres? Quelle est mon erreur?

23
demandé sur Dan Aloni 2012-09-04 15:51:26

4 réponses

Comme vous l'avez déjà observé, il existe en effet une dépendance circulaire entre pkg-config et glib. Pour le casser, le code source de pkg-config inclut une version de glib, ce qui est suffisant pour le compiler. Cela devrait rompre le cycle de dépendance.

Essayez de configurer pkg-config avec --with-internal-glib.

25
répondu user1202136 2012-09-04 12:29:07

Il est déjà contenu dans le message d'erreur glib:

Vous pouvez également définir les variables D'environnement LIBFFI_CFLAGS et LIBFFI_LIBS pour éviter la nécessité d'appeler pkg-config. Voir la page de manuel pkg-config pour plus de détails.

Le script de construction Glib utilise pkg-config pour trouver libffi. Mais vous pouvez également fournir les informations manuellement, en définissant des variables d'environnement. Ensuite, l'appel à pkg-config n'est pas nécessaire. Glib lui-même n'a pas besoin de pkg-config tout.

Une autre solution au problème est fournie par les personnes pkg-config. Encore une fois, à la fin du message d'erreur:

Veuillez définir GLIB_CFLAGS et GLIB_LIBS sur les valeurs correctes ou pass-avec-interne-glib pour configurer

Dans ce scénario, pkg-config lui-même est emballé avec tout le nécessaire pour construire sans avoir déjà Glib sur votre système.

8
répondu ypnos 2012-09-04 12:27:18
export GLIB_CFLAGS="$(pkg-config --cflags glib-2.0)" 
export GLIB_LIBS="$(pkg-config --libs glib-2.0)"
printf '# In the case of a RHEL6.5\n\tGLIB_CFLAGS=%s\n\tGLIB_LIBS=%s\n' "$GLIB_CFLAGS" "$GLIB_LIBS"
# In the case of a RHEL6.5
        GLIB_CFLAGS=-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include
        GLIB_LIBS=-lglib-2.0

# _now_ it is a no-brainer.
1
répondu fned 2014-05-06 09:38:14

Libudev fait maintenant partie de systemd et ne dépend pas de glib.

La plupart des distributions Linux fournissent des binaires pour pkg-config, libudev et glib. Ils sont probablement déjà installés, mais sinon, vous pouvez utiliser le gestionnaire de paquets pour les obtenir.

Si vous avez besoin de compiler ce truc vous-même, pensez à utiliser pkgconf , une implémentation légère de pkg-config qui n'utilise pas glib.

0
répondu David Grayson 2017-08-02 16:20:57