Нам потребуется тулчейн под соответствующую архитектуру — брать здесь. Скачиваем, распаковываем — внутри архива лежит каталог arm-none-linux-gnueabi. Так же скачиваем исходники Zabbix актуальной версии. Далее, в переменной PATH указывается путь до директории arm-none-linux-gnueabi, в моем случае я распаковал архив в корне домашней директории пользователя и путь получился таким:
1 | export PATH=/home/user/arm-none-linux-gnueabi/bin:$PATH |
Переходим в директорию с исходниками Zabbix и конфигурируем, указываем что нам нужен только агент, статическая линковка библиотек и что архитектура у нас будет отличной от той, на которой происходит сборка:
1 | ./configure --disable-server --enable-agent --enable-static --host=arm-none-linux-gnueabi |
Казалось бы и всё, однако из-за ошибок в configure-скрипте Zabbix’а конфигурация успехом не оканчивается:
1 2 3 | checking for long long format... configure: error: in `/home/user/zabbix-2.2.6': configure: error: cannot run test program while cross compiling See `config.log' for more details |
Копируем текст ошибки (cannot run test program while cross compiling), открываем configure в любимом текстовом редакторе, находим в скрипте текст ошибки. В моем случае это была строка номер 7331. И буквально тремя строками ранее мы должны обнаружить вот такое условие:
1 | if test "$cross_compiling" = yes; then : |
Дописываем в конце $cross_compiling пару нижних прочерков, приведя строку к такому виду:
1 | if test "$cross_compiling__" = yes; then : |
Повторяем попытку:
1 | ./configure --disable-server --enable-agent --enable-static --host=arm-none-linux-gnueabi |
И, ура-ура, получаем результат:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Configuration: Detected OS: linux-gnueabi Install path: /usr/local Compilation arch: linux Compiler: arm-none-linux-gnueabi-gcc Compiler flags: -g -O2 Enable server: no Enable proxy: no Enable agent: yes Agent details: Linker flags: -rdynamic -static Libraries: -lm -ldl -lrt -lresolv Enable Java gateway: no LDAP support: no IPv6 support: no *********************************************************** * Now run 'make install' * * * * Thank you for using Zabbix! * * <http://www.zabbix.com> * *********************************************************** |
Далее собираем с помощью волшебной команды make, находим собранные бинарники Zabbix-агента в директории ./src/zabbix_agent/, копируем их на TBS MOI Plus (так же неплохо было бы закинуть конфиг для агента) и далее используем по назначению. На MOI Plus бинарник агента благополучно запускается, но не работает, тонко намекая нам, что не стоит запускать его от имени root:
1 2 | zabbix_agentd [32088]: user zabbix does not exist zabbix_agentd [32088]: cannot run as root! |
Но это, как говорится, уже совсем другая история о другой проблеме, которую еще только предстоит решить 🙂
P.S.
Спасибо за помощь Андрею Дылдину, разработчику Астры, ПО для вещания IP-потоков.