1 Problemes de compilació

Aquests són els problemes coneguts sobre la compilació de Zabbix des de les fonts. Per a la resta de casos, consulteu la pàgina de problemes coneguts.

Compilació de l'agent Zabbix sota HP-UX

Si instal·leu la biblioteca PCRE des d'un lloc popular de paquets d'HP-UX http://hpux.connect.org.uk (per exemple, des del fitxer pcre-8.42-ia64_64-11.31.depot), només s'instal·larà la versió de 64 bits de la biblioteca al directori /usr/local/lib/hpux64.

En aquest cas, per a una compilació correcta de l'agent, s'han d'emprar opcions personalitzades amb l'script configure, per exemple:

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

Biblioteca en una ubicació no estàndard

Zabbix us permet especificar una biblioteca ubicada a un lloc no estàndard. A l'exemple següent, Zabbix executarà curl-config des de la ubicació no estàndard especificada i emprarà la seva sortida per determinar el libcurl correcte a emprar.

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

Això funcionarà si és l'únic libcurl instal·lat al sistema, però potser no pas si hi ha un altre libcurl instal·lat en una ubicació estàndard (pel gestor de paquets, per exemple). Aquest és el cas quan us cal una versió més nova de la biblioteca per a Zabbix i la més antiga per a altres aplicacions.

Per tant, especificar un component en una ubicació no estàndard no sempre funcionarà quan el mateix component també existeix en una ubicació estàndard.

Per exemple, si empreu un libcurl més nou instal·lat a /usr/local amb el paquet libcurl encara instal·lat, Zabbix podria agafar l'equivocat i la compilació fallarà:

usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): a la funció 'zbx_http_convert_to_utf8':
       /tmp/zabbix-master/src/libs/zbxhttp/http.c:957: referència indefinida a 'curl_easy_header'
       collect2: error: ld returned 1 exit status

Aquí, la funció curl_easy_header() no és disponible a l'antiga /usr/lib/x86_64-linux-gnu/libcurl.so, però sí que ho és a la nova /usr/local/lib/libcurl.so .

El problema rau en l'ordre dels indicadors d'enllaç i una solució és especificar el camí complet 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

Tingueu en compte l'opció -Wl,--no-as-needed que pot caldre en alguns sistemes (vegeu també: opcions d'enllaç predeterminades a sistemes basats en Debian).