Ошибка: версия `CXXABI_1.3.8` не найдена (требуется для ...)
Недавно я столкнулся с проблемой, когда запускаю свою программу после компиляции. Я получаю следующую ошибку:
./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: версия 'CXXABI_1.3.8' не найдена (требуется ./prog)
./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: версия 'GLIBCXX_3.4.19' не найдена (требуется ./prog)
./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: версия 'GLIBCXX_3.4.20' не найдена (требуется /home/arman/lib/boost_1_55_0/stage/lib/libboost_serialization.so.1.55.0)
У меня установлены boost 1.55.0 и gcc 4.9.0 в директориях ~/lib/boost_1_55_0
и ~/lib/gcc-4.9.0
соответственно, и я предполагаю, что это связано с тем, что я испытываю проблемы, но не знаю, как это исправить.
В моем файле ~/.profile
есть следующая строка:
export LD_LIBRARY_PATH=/home/user/lib/boost_1_55_0/stage/lib:$LD_LIBRARY_PATH
Пожалуйста, подскажите, как можно решить эту проблему с ошибками о версиях библиотек.
1 ответ(ов)
Проблема заключается в том, что ваша версия GCC 4.9 использует более новую версию ABI C++, чем та, что доступна в вашей системной библиотеке libstdc++. Чтобы решить эту проблему, вам нужно указать загрузчику использовать новую версию библиотеки, добавив путь к ней в переменную окружения LD_LIBRARY_PATH
. К сожалению, я не могу точно сказать, где расположена libstdc++ для вашей установки GCC 4.9, так как это зависит от конфигурации, использованной при установке GCC.
Вы можете попробовать команду в следующем стиле:
export LD_LIBRARY_PATH=/home/user/lib/gcc-4.9.0/lib:/home/user/lib/boost_1_55_0/stage/lib:$LD_LIBRARY_PATH
Обратите внимание, что фактический путь может быть другим (возможно, есть подкаталог, такой как x86_64-unknown-linux-gnu/4.9.0
или что-то подобное). Чтобы найти правильный путь, вам может понадобиться ознакомиться с настройками вашей сборки GCC или провести поиск в файловой системе.
Как изменить цвет вывода echo в Linux
В чём разница между g++ и gcc?
Как вывести список символов из .so файла?
Неопределенная ссылка на виртуальную таблицу (vtable)
Почему GCC вызывает sqrt() из libc, не используя его результат?