Ошибка времени выполнения [abi: cxx11] при компиляции с g ++ — 4.9 в Ubuntu 15.10

Я недавно обновил Ubuntu с 15.04 по 15.10. Одним из основных отличий между этими версиями является обновление версии gcc по умолчанию с gcc-4.9 -> gcc-5. Библиотека, которую я разрабатываю, была написана и скомпилирована для gcc-4.9 и основана на других библиотеках, которые работают только в gcc-4.9.

Я установил gcc-4.9 на свой компьютер и могу успешно скомпилировать библиотеку и исходный файл. Однако, когда я пытался запустить результирующую программу, я получаю эту ошибку:

terminate called after throwing an instance of 'std::ios_base::failure[abi:cxx11]'
what():  basic_ios::clear: iostream error
Aborted (core dumped)`

Исходный код и файл, который я пытаюсь прочитать, использовались до обновления. Я пытался использовать -D_GLIBCXX_USE_CXX11_ABI=0 флаг, но я не уверен, что это правильно, также это не работает.

Это пример флагов, которые я сейчас включил в свой make-файл:

CPPFLAGS = -O0 -g3 -Wall -c -fpermissive -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++0x -fPIC -MMD -MP

Есть идеи, которые могут мне помочь?

1

Решение

Вам «просто» нужно перекомпилировать все ваша программа нуждается в C ++.

См. Например вики Debian о переходе который имеет (среди прочего)

Хорошей новостью является то, что GCC 5 теперь обеспечивает стабильный ABI libcxx11 и стабильную поддержку C ++ 11 (версия GCC до 5 назвала это поддерживаемым экспериментальным). Это потребовало некоторых изменений в libstdc ++ ABI, и теперь libstdc ++ 6 предоставляет двойной ABI, классический libcxx98 ABI и новый libcxx11 (GCC 5 (<< 5.1.1-20) предоставляет только классический libcxx98 ABI). Плохая новость заключается в том, что (экспериментальная) поддержка C ++ 11 в классическом ABI libcxx98 и новые стабильные ABI libcxx11 несовместимы, и апстрим не предоставляет пути обновления, за исключением восстановления

Там нет ярлыка.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]