web-dev-qa-db-fra.com

GLIBCXX_3.4.20 introuvable, comment corriger cette erreur?

J'essaie de lancer le programme Layout Editor (disponible sur ce site ) sur Ubuntu 14.04.1 LTS 64 bits I récupère la sortie suivante dans le terminal:

$ layout
layout: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by layout)

J'ai essayé la commande strings sur /usr/lib/x86_64-linux-gnu/libstdc++.so.6 comme suit et voici l'entrée et la sortie:

$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

Comment puis-je résoudre ce problème? J'imagine en quelque sorte qu'il est lié à GCC mais je ne peux pas déterminer comment résoudre le problème. De plus, j'ai essayé un PPA comme suggéré sur Comment utiliser le dernier GCC sur Ubuntu? et une question similaire se pose pour une version plus ancienne d'Ubuntu à l'adresse GLIBCXX_3.4.15 introuvable . Cependant, après avoir exécuté Sudo update, de nombreux avertissements se sont produits et la liste que j'ai obtenue avec la commande strings ne contenait aucune nouvelle entrée après l'installation de gcc 4.9. J'ai donc purgé le PPA ( Toolchains Test Builds ) avec ppa-purge. Toute aide, suggestions sur la façon de procéder sont grandement appréciées.

103
Vesnog

J'avais le même problème lorsque j'essayais de lancer un autre programme et que je trouvais une solution sur StackOverflow .

Fondamentalement, il suffit de faire les commandes suivantes: Tout d’abord, installer:

Sudo apt-get install libstdc++6

Cela devrait déjà être installé par défaut, mais essayez quand même. Si cela ne résout pas le problème, procédez comme suit:

Sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get dist-upgrade

Je n'ai pas exécuté la commande "dist-upgrade", mais les précédentes l'ont résolue pour moi

98
Paulo

Cela m'est arrivé avec anaconda 4.0.0 (comme @mjp l'a déclaré), mais le correctif pour moi était d'exécuter cette commande dans mon environnement:

conda install libgcc
59
neok

J'ai eu ce problème - c'était parce que Anaconda2 n'avait pas la version GLIBCXX_3.4.20 de quoi que ce soit. Seulement jusqu'à .19, le même que le vôtre.

Cependant, la bibliothèque d'Ubuntu en possédait. Donc, je viens de créer un raccourci/lien dans la bibliothèque Anaconda vers la bibliothèque Linux contenant ce GLIBCXX_3.4.20, remplaçant le précédent, et cela a fonctionné correctement après le redémarrage de l'interface graphique python.

Il devrait y avoir un dossier appelé libstdc++.so.6 dans la bibliothèque Anaconda, qui est ici: ~/anaconda2/lib. Dans ce dossier se trouvent les versions du script/library-code-thing, à l'exception de celle qui vous manque: GLIBCXX_3.4.20

Suivez ces étapes pour résoudre le problème:

  1. allez au bon endroit et sauvegardez votre raccourci actuel anaconda2 (changez son nom pour qu'il ne soit pas écrasé):

    cd ~/anaconda2/lib
    mv -vf libstdc++.so.6 libstdc++.so.6.old
    
  2. créez un nouveau raccourci à l'aide de la commande ln (je suppose que je suis à l'emplacement précédent ~/anaconda2/lib):

    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./libstdc++.so.6
    
  3. redémarrez spyder/autre interface que vous utilisez

Cela devrait maintenant fonctionner!

11
mjp

J'ai résolu un problème comme celui-ci (mais GLIBCXX_3.4.21) sous CentOS mais il n'est pas dépendant d'os. La bibliothèque fait partie du compilateur gcc, vous devez donc installer ou compiler la version appropriée de gcc. Voici le tableau des versions de gcc et des versions de libstdc ++ approprié:

GCC 4.9.0: libstdc++.so.6.0.20
GCC 5.1.0: libstdc++.so.6.0.21
GCC 6.1.0: libstdc++.so.6.0.22
GCC 7.1.0: libstdc++.so.6.0.23
GCC 7.2.0: libstdc++.so.6.0.24
GCC 8.0.0: libstdc++.so.6.0.25

(La liste complète des versions est ici )

Cela ne dépend pas de la manière d'installer gcc - il peut être installé à partir d'un paquet ou compilé et installé à partir de sources.

Il est possible que les bibliothèques système gcc soient disponibles au lieu d’être nouvellement installées. Donc besoin de spécifier la variable d'environnement où trouver les bibliothèques par exemple en ligne de commande comme ceci:

$ LD_LIBRARY_PATH=/usr/local/lib64 command args ...
5
oklas

J'ai eu cela plusieurs fois au cours des années avec de nombreux forfaits différents. Cela a toujours été résolu par:

Sudo apt-get dist-upgrade

Si votre distribution peut être mise à niveau, une nouvelle bibliothèque C++ sera presque toujours détruite et des éléments de configuration tels que ceux-ci fonctionneront à nouveau. Le problème est presque toujours causé par le fait que votre système ne pointe pas vers la bonne bibliothèque. Dans mon cas, cela est généralement dû au fait de pointer vers une version compilatrice croisée d'une bibliothèque.

2
Bryan Wilcutt
Sudo cp /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6 /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6.0.20 /usr/lib/x86_64_linux-gnu/
1
Mati

before_install:

# Cette solution de contournement est nécessaire pour éviter les erreurs libstdc ++ lors de l'exécution de "extended" hugo avec prise en charge de SASS.

  • wget -q -O libstdc++6 http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_AMD64.deb
  • Sudo dpkg --force-all -i libstdc++6

installer:

  • wget -q -O hugo.deb https://github.com/gohugoio/hugo/releases/download/v0.46/hugo_extended_0.46_Linux_64bit.deb
  • Sudo dpkg -i hugo.deb

J'ai trouvé cette solution ici