Версия `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
Ответы
Ответ 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 'или аналогичный).