Подтвердить что ты не робот

Версия `CXXABI_1.3.8 'не найдена (требуется...)

Когда я запускаю свою программу после компиляции, я получаю следующую ошибку:

./prog:/usr/lib/x86_64-linux-gnu/libstdc++.so.6: версия CXXABI_1.3.8' not found (required by ./prog) ./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 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,0)

У меня есть как boost 1.55.0, так и gcc 4.9.0, установленные в ~/lib/boost_1_55_0 и ~/lib/gcc-4.9.0 соответственно, и я предполагаю, что именно поэтому у меня проблемы, но я не уверен, как это сделать фиксируя его.

my ~/.profile содержит следующую строку:

export LD_LIBRARY_PATH =/home/user/lib/boost_1_55_0/stage/lib: $LD_LIBRARY_PATH

4b9b3361

Ответ 1

GCC 4.9 представляет новую версию С++ ABI, чем ваша система libstdС++, поэтому вам нужно сказать загрузчику использовать эту более новую версию библиотеки, добавив этот путь к LD_LIBRARY_PATH. К сожалению, я не могу сразу сказать вам, где находится libstdС++, поэтому для вашей установки 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 'или аналогичный).