2016-03-30 4 views
5

Я загрузил библиотеку, которая была скомпилирована с gcc 4.8 перед изменением ABI в GCC.Как скомпилировать boost с GCC 5 с использованием старого ABI?

На моем ноутбуке (последний kubuntu) У меня есть GCC 5.2. И когда я установил импульс, кажется, что он использовал новый ABI, но затем я получаю следующие ошибки ссылки

неопределенного символ .....__ cxx11 ....

Как установить импульс, используя старые ABI с GCC5?

ответ

6

Насколько я знаю, в официальных хранилищах Kubuntu нет готовых пакетов Boost для старого ABI, поэтому вам придется строить Boost самостоятельно. Процесс строительства документирован here.

Убедитесь, что вы создаете ту же версию Boost, которая была использована при создании вашей библиотеки. Если бы были определенные макросы конфигурации Boost, вам также необходимо будет определить их аналогичным образом. В противном случае вы можете столкнуться с несовместимостью ABI между библиотекой и Boost, которую вы создали.

Чтобы переключить libstdC++ на старый ABI, вам также необходимо определить _GLIBCXX_USE_CXX11_ABI в 0, как описано here. Например:

b2 -j8 variant=release define=_GLIBCXX_USE_CXX11_ABI=0 stage 

Вам также необходимо определить макрос, когда вы строите свой собственный код, который использует подталкивание и библиотеку.

+2

Спасибо за правильный ответ. «define» - это вариант конфигурации, который я искал. Я хотел бы добавить эту ссылку для тех, кому могут понадобиться другие варианты. http://www.boost.org/build/doc/html/bbv2/overview/invocation.html –

 Смежные вопросы

  • Нет связанных вопросов^_^