1. Проблемы при компиляции

Это известные проблемы, связанные с компиляцией Zabbix из исходных кодов. Во всех остальных случаях см. страницу Известные проблемы.

Компиляция Zabbix агента на HP-UX

Если вы устанавливаете библиотеку PCRE с популярного сайта пакетов HP-UX http://hpux.connect.org.uk (например из файла pcre-8.42-ia64_64-11.31.depot), вы получите только 64-битную версию библиотеки, которая будет установлена в директорию /usr/local/lib/hpux64.

В этом случае для успешной компиляции агента необходимо использовать специальные опции для скрипта configure, например:

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

Библиотека в нестандартном месте

Zabbix позволяет указать библиотеку, расположенную в нестандартном месте. В приведённом ниже примере Zabbix запустит curl-config из указанного нестандартного местоположения и использует его вывод для определения правильной используемой библиотеки libcurl.

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

Это будет работать, если это единственная библиотека libcurl, установленная в системе, но может не сработать, если другая библиотека libcurl установлена в стандартном месте (например, с помощью менеджера пакетов). Так бывает, когда вам нужна более новая версия библиотеки для Zabbix и более старая для остальных приложений.

Поэтому указание компонента в нестандартном месте не всегда будет работать, если тот же компонент существует и в стандартном месте.

Например, если вы используете более новую версию библиотеки libcurl, установленную в /usr/local, но при этом установлен ещё пакет libcurl, Zabbix может взять неправильную библиотеку, и компиляция завершится неудачно:

usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
       /tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
       collect2: error: ld returned 1 exit status

Здесь функция curl_easy_header() недоступна в старой версии /usr/lib/x86_64-linux-gnu/libcurl.so, но доступна в более новой /usr/local/lib/libcurl.so.

Проблема заключается в порядке флагов линкера, и одно из решений — указать полный путь к библиотеке в переменной LDFLAGS:

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

Обратите внимание на параметр -Wl,--no-as-needed, который может потребоваться в некоторых системах (см. также: параметры связывания по умолчанию в системах на базе Debian [en]).