it-swarm.com.ru

/usr/lib/x86_64-linux-gnu/libstdc++.so.6: версия CXXABI_1.3.8 'не найдена

Я недавно попросил о помощи https://stackoverflow.com/questions/20253515/no-idea-as-to-usr-lib-x86-64-linux-gnu-libstdc-so-6-version-cxxabi-1 -3-8 и это было понижено и закрыто (я не знаю почему)

Оказывается, что «make install» - цель make, которая устанавливает и подразумевает цель «install-target-libstdc ++ v3», на самом деле не означает, что вы готовы к работе. 

Я застрял на некоторое время, задаваясь вопросом, что я делаю неправильно, потому что я предполагал, что такая целевая цель сделает это для меня.

Надеюсь, этот ответ поможет хотя бы еще одному человеку.

55
Alec Teal

Для всех, кто столкнулся с подобной проблемой, выполните следующее:

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/lib64

Вы можете найти это упомянутое кратко при установке 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. 

Грр это было просто! Кроме того, «если вам когда-нибудь захочется создать ссылку на установленные библиотеки» - серьезно?

35
Alec Teal

У меня была такая же проблема на моем Ubuntu 14.04, когда я пытался установить TopTracker. Я получил такие ошибки:

/usr/share/toptracker/bin/TopTracker: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: версия 'CXXABI_1.3.8' не найдено (требуется /usr/share/toptracker/bin/TopTracker) /usr/share/toptracker/bin/TopTracker: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: версия 'GLIBCXX_3.4.21' отсутствует найдено (требуется /usr/share/toptracker/bin/TopTracker) /usr/share/toptracker/bin/TopTracker: /usr/lib/x86_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
18
Footniko

У меня есть правильное решение здесь .

Лучший способ правильно установить 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, но я предпочитаю использовать свежие обновленные наборы инструментов.

6
Yuliia Ashomok

Это решение работает в моем случае. Я использую 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

Я надеюсь, что это будет работать для вас

2
Vipin Jain

Произошла та же ошибка при установке PhantomJS на 64-битной Ubuntu 14.04 с gcc-4.8 (CXXABI_1.3.7) 

Обновление до gcc-4.9 (CXXABI_1.3.8) устранило проблему. HOWTO: https://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-4-9-on-ubuntu-14-04

1
Marek Tichy

Я столкнулся с этой проблемой в моей системе 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()
0
Ogi Moore

В моем случае это был GCC 6, который отсутствует

Sudo apt-get install gcc-6 g++-6 -y

0
Jose Ospina

То, что предлагают другие ответы, будет работать для рассматриваемой программы, , Но потенциально может привести к поломке других программ и неизвестной зависимости в других местах. Лучше сделать крошечный скрипт-обертку:

#!/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 работает как во время соединения, так и во время выполнения (а is evil :).

0
Britton Kerin