/usr/lib/x86_64-linux-gnu/libstdc++.so.6: версия CXXABI_1.3.8 'не найдена
Недавно я попросил о помощи https://stackoverflow.com/info/20253515/no-idea-as-to-usr-lib-x86-64-linux-gnu-libstdc-so-6-version-cxxabi-1-3-8, и он закрылся и закрыт (я не знаю почему)
Оказывается, что "make install" - цель make, которая устанавливает и подразумевает, что цель "install-target-libstdС++ v3" на самом деле не означает, что вы готовы к работе.
Я застрял некоторое время, задаваясь вопросом, что я делаю неправильно, потому что предположил, что такая целевая цель сделает это для меня.
Надеюсь, этот ответ поможет хотя бы одному другому человеку.
Ответы
Ответ 1
Для всех тех, кто придерживается аналогичной проблемы, выполните следующие действия:
LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
Когда вы компилируете и устанавливаете GCC, он помещает библиотеки здесь, но это. Как часто задают вопросы (http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths), вам нужно добавить его.
Я предположил: "Как я могу гарантировать, что динамически связанная библиотека будет найдена?" означала "как я могу убедиться, что она всегда найдена", а не "ее не найти, вам нужно это сделать"
Для тех, кто не утруждает настройке префикса, это /usr/local/lib 64
Вы можете найти это кратко, когда вы устанавливаете gcc, если вы читаете вывод make:
Libraries have been installed in:
/usr/local/lib/../lib32
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
Grr это было просто! Также "если вам когда-нибудь захочется связываться с установленными библиотеками" - серьезно?
Ответ 2
У меня была такая же проблема на моем Ubuntu 14.04 при попытке установить TopTracker. У меня такие ошибки:
/USR/доли/toptracker/бен/TopTracker: /usr/lib/x 86_64-linux-gnu/libstdc++.so.6: версия 'CXXABI_1.3.8' не найдено (требуется/usr/share/toptracker/bin/TopTracker) /USR/ доли/toptracker/бен/TopTracker: /usr/lib/x 86_64-linux-gnu/libstdc++.so.6: версия 'GLIBCXX_3.4.21' не найдено (требуется/usr/share/toptracker/bin/TopTracker) /USR/ доли/toptracker/бен/TopTracker: /usr/lib/x 86_64-linux-gnu/libstdc++.so.6: версия 'CXXABI_1.3.9' не найдено (требуется/usr/share/toptracker/bin/TopTracker)
Но я тогда установил gcc 4.9 версию и проблема ушла:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
Ответ 3
У меня есть правильное решение здесь.
Лучший способ правильно установить установить gcc-4.9 и установить его в качестве вашей версии gcc по умолчанию:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
-slave, с g++, приведет к тому, что g++ будет включен вместе с gcc, в ту же версию. Но в этот момент gcc-4.9 будет вашей единственной версией, настроенной в альтернативах обновлений, поэтому добавьте 4.8 к альтернативам обновлений, поэтому на самом деле есть альтернатива, используя:
sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
Затем вы можете проверить, какой из них установлен, и изменить его взад и вперед, используя:
sudo update-alternatives --config gcc
ПРИМЕЧАНИЕ. Вы можете пропустить установку репозитория PPA и просто использовать /usr/bin/gcc -4.9-base, но я предпочитаю использовать свежие обновленные инструментальные цепочки.
Ответ 4
Это решение работает на моем примере. Я использую ubuntu 16.04, VirtualBox 2.7.2 и genymotion 2.7.2
Такая же ошибка возникает в моей системе, я выполнил простой шаг, и моя проблема была решена.
1. $ LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
2. $ export LD_LIBRARY_PATH
3. $ sudo apt-add-repository ppa:ubuntu-toolchain-r/test
4. $ sudo apt-get update
5. $ sudo apt-get install gcc-4.9 g++-4.9
Я надеюсь, что это сработает для вас.
Ответ 5
Имела ту же ошибку при установке PhantomJS на Ubuntu 14.04 64bit с gcc-4.8 (CXXABI_1.3.7)
При обновлении до gcc-4.9 (CXXABI_1.3.8) исправлена проблема. КАК:
https://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-4-9-on-ubuntu-14-04
Ответ 6
Я столкнулся с этой проблемой в своей системе Ubuntu-64 при попытке импортировать fst внутри python как таковой:
Python 3.4.3 |Continuum Analytics, Inc.| (default, Jun 4 2015, 15:29:08)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import fst
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ogi/miniconda3/lib/python3.4/site-packages/pyfst-0.2.3.dev0-py3.4-linux-x86_64.egg/fst/__init__.py", line 1, in <module>
from fst._fst import EPSILON, EPSILON_ID, SymbolTable,\
ImportError: /home/ogi/miniconda3/lib/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/local/lib/libfst.so.1)
Затем я побежал:
[email protected]:~/miniconda3/lib$ find ~/ -name "libstdc++.so.6"
/home/ogi/miniconda3/lib/libstdc++.so.6
/home/ogi/miniconda3/pkgs/libgcc-5-5.2.0-2/lib/libstdc++.so.6
/home/ogi/miniconda3/pkgs/libgcc-4.8.5-1/lib/libstdc++.so.6
find: `/home/ogi/.local/share/jupyter/runtime': Permission denied
[email protected]:~/miniconda3/lib$
mv /home/ogi/miniconda3/lib/libstdc++.so.6 /home/ogi/miniconda3/libstdc++.so.6.old
cp /home/ogi/miniconda3/libgcc-5-5.2.0-2/lib/libstdc++.so.6 /home/ogi/miniconda3/lib/
В какой момент я смог загрузить библиотеку
[email protected]:~/miniconda3/lib$ python
Python 3.4.3 |Continuum Analytics, Inc.| (default, Jun 4 2015, 15:29:08)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import fst
>>> exit()
Ответ 7
Какие другие ответы подскажут, будет работать для рассматриваемой программы,
но он может вызвать поломку в других программах и неизвестную зависимость в другом месте. Лучше сделать крошечную обертку script:
#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
program_needing_different_run_time_library_path
В основном это устраняет проблему, описанную в Почему LD_LIBRARY_PATH является плохим путем ограничения эффектов на нужную им программу.
Обратите внимание, что, несмотря на имена LD_RUN_PATH, работает во время соединения и не является злом, а LD_LIBRARY_PATH работает как по ссылке, так и по времени выполнения (и является злом:).
Ответ 8
В моем случае это был gcc 6, который отсутствует
sudo apt-get install gcc-6 g++-6 -y