[comment]: # ({db9581f0-7ceec24f})
# 1. Проблемы при компиляции

Это известные проблемы, связанные с компиляцией Zabbix из исходных кодов. Во всех остальных случаях смотрите страницу [Известные проблемы](/manual/installation/known_issues).

[comment]: # ({/db9581f0-7ceec24f})

[comment]: # ({3ad90e1c-434390ba})
#### Компиляция 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

[comment]: # ({/3ad90e1c-434390ba})

[comment]: # ({1cd70dd2-c904d9ff})
#### Библиотека в нестандартном месте

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\]](https://wiki.debian.org/ToolChain/DSOLinking)).

[comment]: # ({/1cd70dd2-c904d9ff})

[comment]: # ({35610a10-766dd1da})
#### Слишком маленький размер стека в некоторых системах

Если Zabbix аварийно завершает работу или зависает из-за переполнения стека, вы можете увеличить размер стека для каждого потока с помощью параметра `--with-stacksize` при [конфигурировании исходного кода](/manual/installation/install#сконфигурируйте-исходный-код).
Эта проблема может возникнуть в системах с низкими ограничениями по умолчанию на размер стека потоков, особенно во время [предобработки](/manual/config/items/preprocessing), когда создаётся несколько потоков.

В следующем примере размер стека задается равным 512 КБ на поток:

```bash
./configure --enable-server --with-mysql --with-stacksize=512
```

В системах на базе Linux вы можете проверить ограничения на размер стека потоков во время выполнения с помощью команды `ulimit -s`.

[comment]: # ({/35610a10-766dd1da})
