GLIBCXX_3.4.20 nicht gefunden, wie man diesen Fehler behebt?


104

Whey Ich versuche, das Programm Layout Editor (auf dieser Site verfügbar ) auf Ubuntu 14.04.1 64-Bit-LTS auszuführen. Ich erhalte die folgende Ausgabe im Terminal:

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

Ich habe versucht , den Befehl stringsauf , /usr/lib/x86_64-linux-gnu/libstdc++.so.6wie folgend und hier der Eingang und der Ausgang:

$ 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

Wie kann ich dieses Problem lösen? Ich vermute, dass es damit zusammenhängt GCC, kann aber nicht herausfinden, wie das Problem behoben werden kann. Außerdem habe ich versucht, eine PPA wie vorgeschlagen auf Wie verwende ich die neueste GCC auf Ubuntu? und es gibt eine ähnliche frage für eine ältere version von Ubuntu bei GLIBCXX_3.4.15 nicht gefunden . Nachdem ich ausgeführt sudo updatehabe, erhalte ich jedoch zahlreiche Warnungen und die Liste, die ich mit dem Befehl strings erhalten habe, enthielt nach der Installation keine neuen Einträge. Daher gcc 4.9habe ich die PPA ( Toolchains Test Builds ) mit gelöschtppa-purge . Hilfe und Vorschläge zur weiteren Vorgehensweise sind sehr willkommen.


Schon eine Lösung gefunden?
Steven Roose

1
@StevenRoose Ich konnte das Problem lösen, nachdem ich einige Backports hinzugefügt und Software installiert hatte, aber ich erinnere mich nicht genau an die Details, wenn ich mich an sie erinnere. Ich werde sie als Antwort posten.
Vesnog

Es scheint, dass dies eine Auswirkung der Symbolverknüpfung ist: stackoverflow.com/questions/2856438/… Sie verknüpfen einfach nicht mit einer Bibliotheksversion, die aktuell genug ist.
Ciro Santilli

Antworten:


102

Ich hatte das gleiche Problem, als ich versuchte, ein anderes Programm auszuführen, und fand eine Lösung für StackOverflow .

Führen Sie einfach die folgenden Befehle aus: Installieren Sie zunächst:

sudo apt-get install libstdc++6

Dies sollte bereits standardmäßig installiert sein, aber versuchen Sie es trotzdem. Wenn es das Problem nicht löst, gehen Sie wie folgt vor:

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

Ich habe den Befehl "dist-upgrade" nicht ausgeführt, aber die vorherigen haben ihn für mich gelöst


6
sudo apt-get dist-upgrade löste mein Problem
ady

2
Problem gelöst, ohne die Notwendigkeit für dist-upgradewie upgradevorgeschlagen und aktualisiert mein System mit dem neuestenlibstdc++
arainone

2
Repository-Erweiterung, 'Update' und ein 'Dist-Upgrade' waren allesamt auf meiner Seite erforderlich.
virtualxtc

5
Nach dem Update können Sie die neueste Version von GLIBCXX asstrings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
Krishan Kumar Mourya 06.10.17

1
Ubuntu 16.04: Im November 2017, und fügte hinzu , die 'nicht vertrauenswürdigen und nicht unterstützt' ppa: ubuntu-Toolchain-r / Test über Add- apt-repositoryaktualisiert /usr/lib/x86_64-linux-gnu/libstdc++.so.6bis einschließlich GLIBCXX_3.4.24 - und außerdem diese aktualisiert basicall ALL c / c ++ / Fortran Entwicklungstools auf Ihrem Computer
knb

60

Es passierte mir mit Anaconda 4.0.0 (wie @mjp feststellte), aber der Fix für mich bestand darin, diesen Befehl in meiner Umgebung auszuführen:

conda install libgcc

6
Dies löste es für mich, nachdem ich viele Lösungen aus anderen Threads ausprobiert hatte.
Shawn Anderson

3
Funktioniert auch auf Ubuntu 16.04
fviktor

1
Das hat meinen Hintern ein paar Mal wirklich gerettet!
MBZ

Ubuntu 16.04 - hat es für mich gelöst.
Zhubarb

das ist viel besser .. hat bei mir funktioniert .. habe versucht, 'ROOT' in Python zu importieren
MycrofD

11

Ich hatte dieses Problem - es lag daran, Anaconda2dass ich nicht die GLIBCXX_3.4.20-Version von dem hatte, was das Ding ist. Nur bis zu .19, genau wie bei Ihnen.

Ubuntus Bibliothek hatte es jedoch . Also habe ich gerade einen Softlink / eine Verknüpfung in der Anaconda-Bibliothek zu der tatsächlichen Linux-Bibliothek erstellt, die GLIBCXX_3.4.20 enthält und die vorherige ersetzt. Nach dem Neustart der Python-GUI (Spyder) hat dies problemlos funktioniert.

Es sollte so genannten Ordner libstdc++.so.6in der Anaconda - Bibliothek, die hier: ~/anaconda2/lib. In diesem Ordner befinden sich die Versionen des Skripts / Bibliothekscodes, mit Ausnahme derjenigen, die Sie vermissen: GLIBCXX_3.4.20

Befolgen Sie diese Schritte, um das Problem zu beheben:

  1. Gehen Sie zum richtigen Speicherort und sichern Sie Ihre aktuelle anaconda2Verknüpfung (ändern Sie ihren Namen, damit sie nicht überschrieben wird):

    cd ~/anaconda2/lib
    mv -vf libstdc++.so.6 libstdc++.so.6.old
    
  2. erstelle eine neue Verknüpfung mit dem lnBefehl (ich gehe davon aus, dass ich mich am vorherigen Ort befinde ~ / anaconda2 / lib):

    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./libstdc++.so.6
    
  3. Starten Sie die von Ihnen verwendete Spyder / andere Schnittstelle neu

Es sollte jetzt funktionieren!


für mich war es genug, nur die conda .so umzubenennen, dann fand es die os-version ohne einen link
Mingwei Samuel

7

Ich habe dieses Problem (aber GLIBCXX_3.4.21) auf CentOS gelöst, aber es ist nicht von OS abhängig. Die Bibliothek ist Teil des gcc-Compilers. Sie müssen daher die entsprechende Version von gcc installieren oder kompilieren. Dies ist eine Tabelle mit Versionen von gcc und Versionen der entsprechenden libstdc ++:

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

(vollständige Liste der Versionen ist hier )

Es hängt nicht davon ab, wie gcc installiert wird - es kann aus einem Paket installiert oder aus Quellen kompiliert und installiert werden.

Es ist möglich, dass System-GCC-Bibliotheken verfügbar sind, anstatt neu installiert zu werden. Geben Sie daher die Umgebungsvariable an, in der sich Bibliotheken befinden, beispielsweise in der folgenden Befehlszeile:

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

Ich reparierte diese dauerhaft durch den Link Aktualisierung /usr/lib64/libstdc++.so.6auf die neuere Version zu verweisen ich hatte /usr/local/lib64/libstdc++.so.6mit diesem Befehl: ln -fs /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6. Die alte Version enthält keinen Link, der darauf verweist, wenn Sie zurücksetzen müssen. Ein bisschen hacken, aber es funktioniert.
Matthew

2

Ich habe das im Laufe der Jahre viele Male mit vielen verschiedenen Paketen erlebt. Es wurde immer gelöst von:

sudo apt-get dist-upgrade

Wenn Ihre dist aktualisierbar ist, wird fast immer eine neue C ++ - Bibliothek heruntergefahren und Dinge neu konfiguriert, so dass sie wieder funktionieren. Das Problem wird fast immer dadurch verursacht, dass Ihr System nicht auf die richtige Bibliothek verweist. In meinem Fall in der Regel durch den Verweis auf eine Cross-Compiler-Version einer Bibliothek verursacht.


2

before_install:

# Diese Problemumgehung ist erforderlich, um libstdc ++ - Fehler beim Ausführen von "extended" hugo mit SASS-Unterstützung zu vermeiden.

  • 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

Installieren:

  • 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

Ich habe diese Lösung hier gefunden


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/

5
Willkommen bei Ask Ubuntu! Ich empfehle , diese Antwort zu bearbeiten , um sie mit spezifischen Details darüber zu erweitern, was mit diesem Befehl erreicht werden soll. (Siehe auch Wie schreibe ich eine gute Antwort ?, um allgemeine Hinweise zu erhalten, welche Arten von Antworten auf Ask Ubuntu als am wertvollsten erachtet werden.)
David Foerster,

6
Warum cpnicht ln -s?
AB
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.