txt source pkg linux glib pkg-config

source - Linux glib necesita pkg-config y pkg-config necesita glib?



pkg config txt (4)

Intento instalar udev. Y udev me da un error durante el ./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, faltan pkg-config y glib-2.0.

Al principio intenté instalar pkg-config. Recibí este mensaje:

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, yo interpreto, que falta glib.

Siguiente paso instalando Glib.

Y recibí este mensaje:

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.

Pero ahora estoy desconcertado. ¿Se necesitan mutuamente? Cual es mi error


Como ya ha observado, existe una dependencia circular entre pkg-config y glib. Para romperlo, el código fuente de pkg-config incluye una versión de glib, que es suficiente para compilarlo. Esto debería romper el ciclo de dependencia.

Intente configurar pkg-config con --with-internal-glib .


Ya está contenido en el mensaje de error glib:

Alternativamente, puede configurar las variables de entorno LIBFFI_CFLAGS y LIBFFI_LIBS para evitar la necesidad de llamar a pkg-config. Vea la página del manual de pkg-config para más detalles.

El script de compilación de Glib usa pkg-config para encontrar libffi. Pero también puede proporcionar la información manualmente, estableciendo variables de entorno. Entonces la llamada a pkg-config no es necesaria. Glib en sí no necesita pkg-config en absoluto.

El pkg-config proporciona otra solución al problema. De nuevo, al final del mensaje de error:

configure GLIB_CFLAGS y GLIB_LIBS a los valores correctos o pase --with-internal-glib para configurar

En este escenario, pkg-config está empaquetado con todo lo necesario para compilar sin tener ya Glib en su sistema.


libudev ahora es parte de systemd y no depende de glib.

La mayoría de las distribuciones de Linux proporcionan binarios para pkg-config, libudev y glib. Probablemente ya estén instalados, pero si no, puede usar el administrador de paquetes para obtenerlos.

Si necesita compilar estas cosas por su cuenta, considere usar pkgconf , una implementación ligera de pkg-config que no usa glib.


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.