Это известные проблемы, связанные с компиляцией Zabbix из исходных кодов. Во всех остальных случаях см. страницу Известные проблемы.
Если вы устанавливаете библиотеку 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.
Это будет работать, если это единственная библиотека 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]).