Как построить Asterisk 1.8 на Xenial?

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 - вот что удерживает нас.

1
задан 8 June 2016 в 02:14

1 ответ

Как ответил Билл Карвин, это проблема gcc. Но мне удалось создать Asterisk 1.8 только после добавления дополнительного флага для настройки:

./configure CXX=g++-4.8 CC=gcc-4.8

Также обратите внимание на дефисы в значениях.

2
ответ дан 23 May 2018 в 10:16

Другие вопросы по тегам:

Похожие вопросы: