2012-09-04 8 views
23

Provo ad installare udev. E udev mi dà un errore durante la ./configureGli glib di Linux ha bisogno di pkg-config e pkg-config ha bisogno di un lob?

--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 e glib-2.0 è mancante.

Inizialmente ho provato a installare pkg-config. Ho ricevuto questo messaggio:

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, io interpreto, manca quello glib.

Passaggio successivo all'installazione di Glib.

E ho ricevuto questo messaggio:

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. 

Ma sono perplesso ora. Hanno bisogno l'uno dell'altro? Qual è il mio errore?

risposta

25

Come già osservato, esiste effettivamente una dipendenza circolare tra pkg-config e glib. Per romperlo, il file source code di pkg-config include una versione di glib, che è sufficiente per compilarlo. Questo dovrebbe interrompere il ciclo di dipendenza.

Provare a configurare pkg-config con --with-internal-glib.

+0

Grazie per la risposta. Ha funzionato, ma i messaggi di errore di glib e udev sono rimasti ugualmente – Peter

+1

@Peter hai provato a compilare 'udev' con' ./configure --with-internal-glib'? – user1202136

+0

@Peter assolutamente provarlo. Non posso sottolineare abbastanza quanto sia importante leggere attentamente i messaggi di errore e capire cosa significano! – ptomato

8

Si è già contenuto nel messaggio di errore 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.

Il Glib costruire script utilizza pkg-config per trovare libffi. Ma puoi fornire le informazioni anche manualmente, impostando le variabili di ambiente. Quindi la chiamata a pkg-config non è necessaria. Glib stesso non ha bisogno di pkg-config.

Un'altra soluzione al problema è fornita dalle persone di pkg-config. Anche in questo caso, alla fine del messaggio di errore:

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

In questo scenario, pkg-config stesso viene fornito con tutto il necessario per costruire, senza dover Glib sul sistema già.

+1

Se non sai come fare la prima soluzione, fare la seconda soluzione è un gioco da ragazzi. – ypnos

+0

Grazie per la risposta. Funzionava con il secondo modo, ma i messaggi di errore di glib e udev rimanevano ancora – 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

Potresti aggiungere qualche spiegazione – Narendra

0

libudev è ora parte di systemd e non dipende da glib.

La maggior parte delle distribuzioni Linux fornisce binari per pkg-config, libudev e glib. Probabilmente sono già installati, ma in caso contrario è possibile utilizzare il gestore pacchetti per ottenerli.

Se è necessario compilare questa roba da soli, prendere in considerazione l'utilizzo di pkgconf, un'implementazione leggera di pkg-config che non utilizza glib.

Problemi correlati