web-dev-qa-db-fra.com

/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8 'introuvable

J'ai récemment demandé de l'aide https://stackoverflow.com/questions/20253515/no-idea-as-to-usr-lib-x86-64-linux-gnu-libstdc-so-6-version-cxxabi-1 -3-8 et il a été voté et fermé (je ne sais pas pourquoi)

Il s’avère que "make install" - la cible make qui installe et implique la cible "install-target-libstdc ++ v3" ne signifie pas réellement que vous êtes prêt à partir. 

Cela fait un moment que je suis bloqué en me demandant ce que je faisais mal parce que je pensais qu'une telle cible ferait cela pour moi.

J'espère que cette réponse aide au moins une autre personne.

55
Alec Teal

Pour tous ceux qui ont un problème similaire, exécutez ce qui suit:

LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

Lorsque vous compilez et installez GCC, les bibliothèques sont placées ici mais c'est tout. Comme le dit la FAQ ( http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths ), vous devez l’ajouter. 

J'ai supposé que "comment puis-je m'assurer que la bibliothèque liée dynamiquement sera trouvée?" Signifiait "comment puis-je m'assurer qu'elle est toujours trouvée" pas "il ne sera pas trouvé, vous devez le faire"

Pour ceux qui ne se soucient pas de définir un préfixe, il s’agit de/usr/local/lib64

Vous pouvez trouver ceci mentionné brièvement lorsque vous installez gcc si vous lisez le résultat:

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 c'était simple! Aussi "s'il vous arrive de vouloir créer un lien avec les bibliothèques installées" - sérieusement?

35
Alec Teal

J'ai eu le même problème sur mon Ubuntu 14.04 lorsque j'ai essayé d'installer TopTracker. J'ai eu de telles erreurs:

/usr/share/toptracker/bin/TopTracker: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'CXXABI_1.3.8' not trouvé (requis par /usr/share/toptracker/bin/TopTracker) /usr/share/toptracker/bin/TopTracker: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.21' pas trouvé (requis par /usr/share/toptracker/bin/TopTracker) /usr/share/toptracker/bin/TopTracker: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'CXXABI_1.3.9' pas found (requis par/usr/share/toptracker/bin/TopTracker)

Mais j’ai ensuite installé la version 4.9 de gcc et le problème est parti:

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

J'ai la solution correcte ici .

La meilleure façon de correctement installer gcc-4.9 et la définir comme version par défaut de gcc} _ use:

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

Le --slave, avec g ++, fera basculer g ++ avec gcc, vers la même version. Mais à ce stade, gcc-4.9 sera votre seule version configurée dans update-alternatives, ajoutez donc 4.8 à update-alternatives. Il existe donc une alternative en utilisant:

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

Ensuite, vous pouvez vérifier lequel est défini et le changer en utilisant:

Sudo update-alternatives --config gcc

REMARQUE: vous pouvez ignorer l’installation du référentiel PPA et utiliser simplement /usr/bin/gcc-4.9-base mais je préfère utiliser les nouvelles chaînes d’outils mises à jour.

6
Yuliia Ashomok

Cette solution fonctionne sur mon cas, j'utilise Ubuntu 16.04, VirtualBox 2.7.2 et genymotion 2.7.2 La même erreur vient dans mon système, j'ai suivi une étape simple et mon problème était résolu 

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

J'espère que cela fonctionnera pour vous

2
Vipin Jain

Avait la même erreur lors de l'installation de PhantomJS sur Ubuntu 14.04 64bit avec gcc-4.8 (CXXABI_1.3.7) 

La mise à niveau vers gcc-4.9 (CXXABI_1.3.8) a corrigé le problème. Comment: https://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-4-9-on-ubuntu-14-04

1
Marek Tichy

J'ai rencontré ce problème sur mon système Ubuntu-64 lors d'une tentative d'importation de fst dans Python en tant que tel:

    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)

J'ai ensuite couru:

ogi@ubuntu:~/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
ogi@ubuntu:~/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/

A quel moment j'ai pu charger la bibliothèque

ogi@ubuntu:~/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

Dans mon cas c’était le gcc 6 qui manquait

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

0
Jose Ospina

Ce que les autres réponses suggèrent fonctionnera pour le programme en question: , Mais il est susceptible de provoquer des ruptures dans d’autres programmes et une dépendance inconnue ailleurs. Il est préférable de créer un petit script wrapper:

#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
program_needing_different_run_time_library_path

Cela évite généralement le problème décrit dans Pourquoi LD_LIBRARY_PATH est mauvais en limitant les effets au programme qui en a besoin.

Notez que malgré les noms, LD_RUN_PATH fonctionne au moment de la liaison et n’est pas diabolique, tandis que LD_LIBRARY_PATH fonctionne à la fois en liaison et en exécution (et est diable :).

0
Britton Kerin