wake-up-neo.com

/usr/lib/libstdc++.so.6: Version `GLIBCXX_3.4.15 'nicht gefunden

Wie kann ich GLIBCXX_3.4.15 in Ubuntu bekommen? Ich kann einige Programme, die ich kompiliere, nicht ausführen.

Wenn ich mache:

strings /usr/lib/libstdc++.so.6 | grep GLIBC

Ich bekomme:

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
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

Danke für jede Hilfe!

130
Chris

Ich kompiliere GCC 4.6 aus dem Quellcode und anscheinend

Sudo make install 

habe diesen nicht erwischt. Ich habe mich umgegraben und gefunden

gcc/trunk/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.15

Ich habe es in/usr/lib kopiert und libstdc ++. So.6 umgeleitet, um auf das neue zu verweisen, und jetzt funktioniert alles.

78
Chris

Ich habe dieses Problem in der Vergangenheit umgangen, indem ich libstdc ++ statisch mit diesem Parameter verknüpft habe, der beim Verknüpfen meiner ausführbaren Datei an g ++ gesendet wurde:

-static-libstdc++

Wenn das statische Verknüpfen der Bibliothek eine Option ist, ist dies wahrscheinlich die schnellste Lösung.

47
Martin G

Ich habe versucht, clang zum Laufen zu bringen (was auch 6.0.15 erfordert), und beim Stöbern habe ich festgestellt, dass es unter /usr/local/lib/libstdc++.so.6.0.15 Installiert wurde. Es wurde dort installiert, als ich Graphit installierte (eine experimentelle gcc-Version).

Wenn Sie Zugriff auf Bibliotheken an diesem Speicherort benötigen, müssen Sie LD_LIBRARY_PATH Wie folgt definieren:

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

Danach konnte ich mich an die Arbeit machen. Hoffe das ist hilfreich für jemanden.

44
Hobo

Ich stoße auf dieses Problem, wenn ich versuche, mit matlab eng m-Funktionen aus c-Code aufzurufen. was mit dem Befehl mex -f .. ..

Meine Lösung:

strings /usr/lib/i386-<tab>/libstdc++.so.6 | grep GLIBC

Ich fand es enthält 3.4.15

mein System hat also die neuesten Bibliotheken.

das problem kommt von matlab selbst, es ruft seine eigene libstdc ++. so.6 von {MATLAB}/bin

ersetzen Sie es einfach durch die aktualisierte Systembibliothek.

12
Cheng Chang

Ich habe den gleichen Fehler bekommen. So hat es bei mir funktioniert:

  • bereinigte das Projekt unter der aktuell installierten gcc
  • neu kompiliert

Perfekt funktioniert!

2
iueae

Ich habe gerade mit einem ähnlichen Problem konfrontiert, das die LLVM 3.7-Version erstellt. Überprüfen Sie zunächst, ob Sie die erforderliche Bibliothek auf Ihrem System installiert haben:

$locate libstdc++.so.6.*

Fügen Sie dann den gefundenen Speicherort Ihrer Umgebungsvariablen $ LD_LIBRARY_PATH hinzu.

2
Arsen

Für diesen Fehler habe ich die neueste libstdc ++. So.6.0.17 von einem anderen Server kopiert, den Softlink entfernt und neu erstellt.

1. Kopieren Sie die libstdc ++ .so.6.0.15 oder die neueste Version von einem anderen Server auf das betroffene System.
In meinem Fall hatte SUSE Linux 11 SP3 die neueste Version.
2. rm libstdc ++. so.6
3. ln -s libstdc ++. so.6.0.17 libstdc ++. so.6 (im Verzeichnis/usr/lib64).

nJoy

2
crazyLinux

gcc version 4.8.1, der fehler sieht so aus:

/ root/bllvm/build/Release + Asserts/bin/llvm-tblgen: /usr/lib64/libstdc++.so.6: Version `GLIBCXX_3.4.15 'nicht gefunden (erforderlich für/root/bllvm/build/Release + Asserts/bin/llvm-tblgen)

Ich habe die libstdc ++. So.6.0.18 an der Stelle gefunden, an der ich gcc 4.8.1 eingehalten habe

Dann mag ich das

cp ~/objdir/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18 /usr/lib64/

rm /usr/lib64/libstdc++.so.6

ln -s libstdc++.so.6.0.18 libstdc++.so.6

problem gelöst.

2
Favoorr

Manchmal steuern Sie den Zielcomputer nicht (z. B. muss Ihre Bibliothek auf einem gesperrten Unternehmenssystem ausgeführt werden). In einem solchen Fall müssen Sie Ihren Code mit der Version von GCC neu kompilieren, die der GLIBCXX-Version entspricht. In diesem Fall können Sie Folgendes tun:

  1. Suchen Sie nach der neuesten Version von GLIBCXX, die vom Zielcomputer unterstützt wird: strings /usr/lib/libstdc++.so.6 | grep GLIBC ... Angenommen, die Version ist 3.4.19.
  2. Verwenden Sie https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html , um die entsprechende GCC-Version zu finden. In unserem Fall ist dies [4.8.3, 4.9.0).
1
Gili

Ich habe sie aus einem RPM extrahiert ( RPM für libstdc ++ ) und dann:

export LD_LIBRARY_PATH=.

Festlegen, dass das System nach den Bibliotheken im aktuellen Verzeichnis sucht. Dann gerade mein Programm ausgeführt. Aber in meinem Fall habe ich eine einzelne ausführbare Datei erhalten, die ich brauchte, es war keine systemweite Änderung.

1
prmottajr

Ich habe gerade -static-libstdc ++ beim Erstellen verwendet. w/that, ich kann den a.out ausführen

g++ test.cpp -static-libstdc++
0
Suresh

In meinem Fall hatte LD_LIBRARY_PATH zuerst/usr/lib64 vor/usr/local/lib64. (Ich baute llvm 3.9).
Der neue gcc-Compiler, den ich zum Kompilieren von llvm 3.9 installiert habe, hatte Bibliotheken mit neueren GLIBCXX-Bibliotheken unter/usr/local/lib64. Ich habe also LD_LIBRARY_PATH behoben, damit der Linker zuerst/usr/local/lib64 sieht.
Das hat dieses Problem gelöst.

0
Chan Kim

Ich hatte ein ähnliches Problem und habe es behoben, indem ich libstdc++ Statisch in das von mir kompilierte Programm eingebunden habe:

$ LIBS=-lstdc++ ./configure ... etc.

statt des üblichen

$ ./configure ... etc.

Es könnte Probleme mit dieser Lösung geben, die mit dem Laden von gemeinsam genutzten Bibliotheken zur Laufzeit zusammenhängen, aber ich habe das Problem nicht gründlich genug untersucht, um es zu kommentieren.

0
Evgeni Sergeev

Gleiches gilt für gcc version 4.8.1 (GCC) und libstdc++.so.6.0.18. Musste es hier kopieren /usr/lib/x86_64-linux-gnu auf meiner Ubuntu-Box.

0

Ich hatte das gleiche Problem zuvor und behebte das Problem, dass die Schritte hier zu finden waren Behebung des Fehlers "GLIBCXX_3.4.15" auf matlab

0
ZijunLost

Ich hatte das gleiche Problem, weil ich den Benutzer von mir zu jemand anderem geändert habe:

su

Aus irgendeinem Grund konnte ich es nach dem normalen Kompilieren nicht ausführen (dieselbe Fehlermeldung). Direkt ssh zum anderen Benutzerkonto funktioniert.

0
SmallChess

Fehler mit GLIBCXX_3.4.14 Sie müssen eine neuere Version von GCC installieren. http://pkgs.org/download/libstdc++.so.6 gehe zu:

http://geeksterminal.com/how-to-install-glib-glibc/1392/

und befolgen Sie die Anweisungen.

0
Marco Silva

Ich hatte mehrere Versionen des GCC-Compilers installiert und musste eine aktuellere Version als die Standardinstallation verwenden. Da ich kein Systemadministrator für unsere Linux-Systeme bin, kann ich nicht einfach/usr/lib oder viele der oben genannten Vorschläge ändern. Ich bin auf dieses Problem gestoßen und habe es schließlich aufgespürt, indem ich meinen Pfad zum 32-Bit-Bibliotheksverzeichnis anstelle des 64-Bit-Bibliotheksverzeichnisses (lib64) festgelegt habe. Da die Bibliotheken im 32-Bit-Verzeichnis nicht kompatibel waren, wurde standardmäßig die ältere Version verwendet, die veraltet war.

Die Verwendung von -L für den Pfad, auf den ich verwiesen habe, warnte vor dem "Überspringen von inkompatiblem libstdc ++. Also bei der Suche nach -lstdc ++". Dies war der Hinweis, der mir geholfen hat, das Problem endlich zu lösen.

0
Cathy