Asterisk 13.1.0 доступен в репозиториях для Xenial.
Но я поддерживаю приложение, которое нуждается в Asterisk 1.8 LTS, потому что мы используем настраиваемый плагин. Нам нужно продолжать использовать Asterisk 1.8 и строить его из источника, пока мы не сможем перенести наш плагин на более новую версию Asterisk.
Однако, похоже, что Asterisk 1.8 не может быть построен с версией g ++, доступной в Xenial, которая равна 5.3.1. Я получаю массу предупреждений, которые можно заставить замолчать, но также много фатальных ошибок, связанных с символами, имеющими дубликаты, и, возможно, с другими фатальными ошибками, даже если бы я смог их решить.
Пример:
iax2-parser.o: In function `ast_atomic_fetchadd_int':
asterisk-1.8/include/asterisk/lock.h:600: multiple definition of `ast_atomic_fetchadd_int'
chan_iax2.o:asterisk-1.8/include/asterisk/lock.h:600: first defined here
iax2-parser.o: In function `ast_atomic_dec_and_test':
asterisk-1.8/include/asterisk/lock.h:646: multiple definition of `ast_atomic_dec_and_test'
chan_iax2.o:asterisk-1.8/include/asterisk/lock.h:646: first defined here
...etc...
Я читал другие сообщения от людей, борющихся с этим, и я пытался использовать параметры компилятора, чтобы обойти его без успеха.
Мой вопрос: есть ли любое решение для выполнения одного из следующих действий:
Построить Asterisk 1.8 с помощью g ++ 5.3.1 и разрешить ошибки компиляции. Установите старую версию g ++ на Xenial (например, я знаю, что g ++ 4.4.7 работает для компиляции Asterisk 1.8 на нашей старой ОС). Некоторое другое решение для сборки версии Asterisk, которая будет работать на Xenial. Возможно, на основе Ubuntu 14.04 и tar бинарные файлы? Я ожидаю получить конфликты в библиотечной версии.Некоторые люди будут glib и говорят: «вы действительно должны просто перейти на Asterisk 13.1.0». Да, я знаю, конечно, что это лучший план. Я знаю, что Asterisk 1.8 прошел свой EOL. Получение ресурса для переноса нашего плагина на Asterisk 13.1.0 - вот что удерживает нас.
Как ответил Билл Карвин, это проблема gcc. Но мне удалось создать Asterisk 1.8 только после добавления дополнительного флага для настройки:
./configure CXX=g++-4.8 CC=gcc-4.8
Также обратите внимание на дефисы в значениях.