Error de compilation de rrdtool 1.4.7: glib-2.0 / glib.h

Estoy tratando de comstackr rrdtool desde el package fuente. No uso packages RPM, así que no me pidas que instale packages;)

Recopilo todo el software requerido antes de rrdtool de acuerdo con http://oss.oetiker.ch/rrdtool/doc/rrdbuild.en.html

./configure de rrdtool está bien.

Pero cuando lo hago, recibí el siguiente error:

CC rrdcached-rrd_daemon.o rrd_daemon.c:108:27: erreur: glib-2.0/glib.h : Aucun fichier ou dossier de ce type rrd_daemon.c:246: erreur: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token rrd_daemon.c: In function âadd_response_infoâ: rrd_daemon.c:540: attention : implicit declaration of function âva_startâ rrd_daemon.c:540: attention : nested extern declaration of âva_startâ rrd_daemon.c:546: attention : implicit declaration of function âva_endâ rrd_daemon.c:546: attention : nested extern declaration of âva_endâ [...] 

glib-2.0 / glib.h existe en mi sistema, en /usr/local/glib-2.34.0/glib/glib.h

Configuré la variable de env PKG_CONFIG_PATH que contiene la ruta de glib. /usr/local/glib-2.34.0/lib/pkgconfig/

Vi un tema al respecto, pero nada para mi caso.

Buscando en config.log todo parece estar bien!

" Aucun fichier ou dossier dece type " == "No existe ese file o directory"

PKG_CONFIG_PATH contiene routes (no pnetworkingeterminadas) para agregar para encontrar files .pc adicionales, no los packages en sí. Si tiene el file .pc correcto en ese directory, debería funcionar.

Verifique la salida de:

 pkg-config --cflags --libs glib-2.0 

(con y sin configurar PKG_CONFIG_PATH )

Debería mostrar su ruta de installation de glib-2.0 para includes & libraries, esta es mía, instalada en /usr/local/ :

 -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include \ -L/usr/local/lib -lglib-2.0 

Si es incorrecto, verifique el file .pc .

Sin embargo , la ruta que proporcione para glib.h parece más a que es solo la fuente desempaquetada, no una installation completa de glib-2.0 . ¿Ya tienes glib-2.0 instalado y construido? Si está comstackndo siguiendo la URL de instrucciones, entonces no parece correcto, y necesita repetir ese paso.

No hay razón para no hacer una configuration / fabricación / installation normal de algunos de estos packages a /usr/local , especialmente glib-2.0 , zlib , libpng , libXML2 , a less que entren en conflicto con algo que ya tiene instalado.

La lógica detrás del documento de compilation RRDtool es build todo en /tmp e instalar todo en /opt para que sea lo más autónomo posible. Si bien es probable que sea un método razonablemente robusto, presenta algunos inconvenientes (incluido el requisito de establecer varias variables de entorno mágico).


Actualización: el problema es que la ruta de installation de glib-2.0 está en conflicto con las funciones incluidas en rrdtool. Cuando lo instala en /usr/local/glib-2.34.0/ el .pc se .pc para especificar un directory de inclusión de /usr/local/glib-2.34.0/include/glib-2.0 . Esta ruta ya contiene el subdirectory glib-2.0 por lo que cuando rrdtool intenta include <glib-2.0/glib.h> falla. Creo que esto es un problema de rrdtool, está enmascarado cuando glib-2.0 se instala en un lugar "esperado" en /usr o /usr/local (y presumiblemente cuando usa las routes de compilation de la guía exactamente).

Si instala en /usr/local , una ruta include de /usr/local/include hará que " #include <glib-2.0/glib.h> " funcione correctamente.

Como solución, sugiero build e instalar todas las dependencies en /usr/local (entonces solo necesitas configurar PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ) o seguir las instrucciones de compilation de rrdtool exactamente, o puedes configurar CFLAGS donde instaló glib-2.0 antes de ejecutar configure , por ejemplo:

 export CFLAGS="-I/usr/local/glib-2.34.0/include" 

(es decir, un directory por encima de lo reportado por pkg-config --cflags glib-2.0 )

Puede ver mejor lo que está sucediendo si la compilation se rompe ejecutando:

 make AM_DEFAULT_VERBOSITY=1 

justo después de un error, los commands utilizados se reintentarán e imprimirán esta vez, para que pueda verificar los indicadores gcc -I .

OK, encontré un informe de fallas , está arreglado (aunque el título " Arreglar compilation con location glib no estándar " es un poco engañoso). No ha habido una nueva versión estable desde entonces. FWIW, hay varias preguntas sin respuesta en la list de usuarios que parecen ser el mismo problema.