2012-09-04 2 views
23

J'essaie d'installer udev. Et udev me donne une erreur au cours de la ./configureLinux glib a besoin de pkg-config et pkg-config a besoin de glib?

--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 est manquante. J'ai d'abord essayé d'installer pkg-config. J'ai reçu 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, il manque une glib.

Prochaine étape d'installation de Glib.

Et je 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 maintenant perplexe. Ont-ils besoin l'un de l'autre? Quelle est mon erreur?

Répondre

25

Comme vous l'avez déjà observé, il existe en effet une dépendance circulaire entre pkg-config et glib. Pour le casser, le source code de pkg-config inclut une version de glib, ce qui est suffisant pour le compiler. Cela devrait casser le cycle de dépendance. Essayez de configurer pkg-config avec --with-internal-glib. La libudev fait maintenant partie de systemd et ne dépend pas de glib.

+0

Merci pour la réponse. Cela a fonctionné, mais les messages d'erreur de glib et udev sont restés – Peter

+1

@Peter avez-vous essayé de compiler 'udev' avec' ./configure --with-internal-glib'? – user1202136

+0

@Peter absolument essayer cela. Je ne saurais trop insister sur l'importance de lire attentivement les messages d'erreur et de comprendre ce qu'ils signifient! – ptomato

8

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

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.

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

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

please set GLIB_CFLAGS and GLIB_LIBS to the correct values or pass --with-internal-glib to configure

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

+1

Si vous ne savez pas comment faire la première solution, faire la deuxième solution est une évidence. – ypnos

+0

Merci pour la réponse. Cela a fonctionné avec la deuxième façon, mais les messages d'erreur de glib et udev sont restés – Peter

1
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. 
+3

Pourriez-vous s'il vous plaît ajouter quelques explications – Narendra

0

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 vous-même ce matériel, pensez à utiliser pkgconf, une implémentation légère de pkg-config qui n'utilise pas glib.