#1 Problemas de compilación

Estos son los problemas conocidos relacionados con la compilación de Zabbix a partir de las fuentes. Para todos los demás casos, consulte la página Problemas conocidos.

Compilando el agente Zabbix en HP-UX

Si instala la biblioteca PCRE desde el popular sitio de paquetes HP-UX http://hpux.connect.org.uk (por ejemplo, desde el archivo pcre-8.42-ia64_64-11.31.depot), solo se instalará la versión de 64 bits de la biblioteca en el directorio /usr/local/lib/hpux64.

En este caso, para una compilación exitosa del agente, se necesita una opción personalizada para el script configure, por ejemplo:

CFLAGS="+DD64" ./configure --enable-agent --with-libpcre-include=/usr/local/include --with-libpcre-lib=/usr/local/lib/hpux64

Biblioteca en una ubicación no estándar

Zabbix le permite especificar una biblioteca ubicada en una ubicación no estándar. En el siguiente ejemplo, Zabbix ejecutará curl-config desde la ubicación no estándar especificada y usará su salida para determinar el libcurl correcto a usar.

$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Esto funcionará si es el único libcurl instalado en el sistema, pero podría no funcionar si hay otro libcurl instalado en una ubicación estándar (por el administrador de paquetes, por ejemplo). Tal es el caso cuando necesita una versión más nueva de la biblioteca para Zabbix y la anterior para otras aplicaciones.

Por lo tanto, especificar un componente en una ubicación no estándar no siempre funcionará cuando el mismo componente también existe en una ubicación estándar.

Por ejemplo, si usa un libcurl más nuevo instalado en /usr/local con el paquete libcurl aún instalado, Zabbix podría seleccionar el incorrecto y la compilación fallará:

usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): en la función 'zbx_http_convert_to_utf8':
       /tmp/zabbix-master/src/libs/zbxhttp/http.c:957: referencia no definida a 'curl_easy_header'
       Collect2: error: ld devolvió 1 estado de salida

Aquí, la función curl_easy_header() no está disponible en el /usr/lib/x86_64-linux-gnu/libcurl.so anterior, pero sí en el /usr/local/lib/libcurl.so más nuevo .

El problema radica en el orden de los indicadores del vinculador y una solución es especificar la ruta completa a la biblioteca en una variable LDFLAGS:

$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Tenga en cuenta la opción -Wl,--no-as-needed que puede ser necesaria en algunos sistemas (consulte también: opciones de enlace predeterminadas en [basado en Debian] (https://wiki.debian.org/ToolChain/DSOLinking) sistemas).