GLIBCXX_3.4.20 introuvable, comment corriger cette erreur?

104

Whey I essaie d’exécuter le programme Layout Editor (disponible sur ce site ) sur Ubuntu 14.04.1 LTS 64 bits, j’obtiens 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 stringssur /usr/lib/x86_64-linux-gnu/libstdc++.so.6comme 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, je devine en quelque sorte qu'il est lié à, GCCmais ne peut pas comprendre 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 il y a une question similaire pour une version plus ancienne d'Ubuntu à GLIBCXX_3.4.15 introuvable . Cependant, après mon exécution, sudo updateje reçois de nombreux avertissements et la liste que j'ai obtenue avec la commande strings ne contenait pas de nouvelles entrées après l'installation 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.

Vesnog
la source
Déjà trouvé une solution?
Steven Roose
1
@StevenRoose J'ai pu résoudre le problème après avoir ajouté des backports et installé des logiciels, mais je ne me souviens pas clairement des détails. Lorsque je les retiens, je les posterai en guise de réponse.
Vesnog
Il semble que ceci soit un effet de liaison de symbole: stackoverflow.com/questions/2856438/… Vous ne créez simplement pas de lien vers une version de bibliothèque suffisamment récente.
Ciro Santilli a annoncé
Double
utilisateur9869932 le

Réponses:

102

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

En gros, 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

Paulo
la source
6
sudo apt-get dist-upgrade a résolu mon problème
ady
2
problème résolu sans la nécessité de dist-upgradecomme upgradeproposé et mis à jour mon système avec le dernierlibstdc++
arainone
2
ajout de dépôt, 'update' et une 'dist-upgrade' étaient tous nécessaires de mon côté.
virtualxtc
5
après la mise à jour, vous pouvez vérifier la dernière version de GLIBCXX en tant questrings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
Krishan Kumar Mourya
1
Ubuntu 16.04: en novembre 2017, ajout du ppa 'non approuvé et non pris en charge' : ubuntu-toolchain-r / test via add- apt-repositoryupdated /usr/lib/x86_64-linux-gnu/libstdc++.so.6à GLIBCXX_3.4.24 inclus - et en outre, cela met à jour le tout ALL c / c ++ / fortran outils de développement sur votre machine
knb
60

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
neok
la source
6
Cela a résolu le problème après avoir essayé de nombreuses solutions d'autres threads.
Shawn Anderson
3
Fonctionne également sur Ubuntu 16.04
fviktor
1
cela m'a vraiment sauvé le cul plusieurs fois!
MBZ
Ubuntu 16.04 - résolu pour moi.
Zhubarb
c'est beaucoup mieux .. a travaillé pour moi .. essayait "d'importer ROOT" en python
MycrofD
11

J'ai eu ce problème - c'est parce Anaconda2que je n'avais 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 l'avait . Donc, je viens de créer un lien symbolique / raccourci dans la bibliothèque Anaconda vers la bibliothèque Linux contenant ce fichier GLIBCXX_3.4.20, remplaçant le précédent, et cela fonctionnait correctement après le redémarrage de l’interface graphique python (Spyder).

Il devrait y avoir un dossier appelé libstdc++.so.6dans 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 anaconda2raccourci actuel (changez le 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 en utilisant la lncommande (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!

mjp
la source
pour moi, il suffisait de renommer le conda .so, puis il a trouvé la version os sans avoir besoin de lien
Mingwei Samuel
7

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 ...
oklas
la source
Je fixe cette permanence en mettant à jour le lien /usr/lib64/libstdc++.so.6pour pointer vers la nouvelle version que j'avais à /usr/local/lib64/libstdc++.so.6cette commande: ln -fs /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6. L'ancienne version reste sans lien pointant vers elle si vous devez revenir en arrière. Un peu de bidouille mais ça marche.
Matthew
2

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.

Bryan Wilcutt
la source
2

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

Jackson Junior Mkhabela
la source
1
sudo cp /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6 /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6.0.20 /usr/lib/x86_64_linux-gnu/
Mati
la source
5
Bienvenue sur Ask Ubuntu! Je vous recommande de modifier cette réponse pour la développer avec des détails spécifiques sur les objectifs de cette commande. (Voir aussi Comment puis-je écrire une bonne réponse? Pour des conseils généraux sur les types de réponses considérés comme les plus utiles sur Ask Ubuntu.)
David Foerster
6
Pourquoi cpet pas ln -s?
AB