Wie kann ich GLIBCXX_3.4.15 in Ubuntu bekommen? Ich kann einige Programme, die ich kompiliere, nicht ausführen.
Wenn ich es tue:
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
Vielen Dank für jede Hilfe!
apt-get
basierte Lösung für dieses Problem ist hier beschrieben: superuser.com/questions/310809/...Ich habe dieses Problem in der Vergangenheit vermieden, indem ich libstdc ++ einfach statisch mit diesem Parameter verknüpft habe, der beim Verknüpfen meiner ausführbaren Datei an g ++ gesendet wurde:
Wenn das statische Verknüpfen in der Bibliothek eine Option ist, ist dies wahrscheinlich die schnellste Lösung.
quelle
Ich habe versucht, Clang zum Laufen zu bringen (was auch 6.0.15 erfordert), und beim Stöbern habe ich festgestellt, dass es bei installiert wurde
/usr/local/lib/libstdc++.so.6.0.15
. Es wurde dort installiert, als ich Graphit installiert habe (eine experimentelle gcc-Version).Wenn Sie an diesem Speicherort Zugriff auf Bibliotheken benötigen, müssen Sie Folgendes definieren
LD_LIBRARY_PATH
: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 jemandem hilfreich.
quelle
LD_LIBRARY_PATH
auf sie auswirken. Sie werden alle auf die neue Bibliothek verlinken. Am Ende funktionieren die meisten Binärdateien nicht: wie zum Beispiells
grep
: Ich bekomme:ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
Ich stoße auf dieses Problem, wenn ich versuche, mit matlab eng m Funktionen aus c-Code aufzurufen. was mit Befehl auftritt
mex -f .. ..
Meine Lösung:
Ich fand es enthält 3.4.15
Mein System hat also die neuesten Bibliotheken.
das problem kommt von matlab selbst, es ruft sein eigenes libstdc ++ auf. so.6 von
{MATLAB}/bin
Ersetzen Sie es einfach durch die aktualisierte Systembibliothek.
quelle
{MATLAB}/bin
die Datei in erstellen/usr/lib/
und dann matlab neu starten . Dies funktioniert in Matlab 2010b unter Fedora 14 x64.Ich habe den gleichen Fehler bekommen. So hat es bei mir funktioniert:
Hat perfekt funktioniert!
quelle
Für diesen Fehler habe ich die neueste Version von libstdc ++. So.6.0.17 von einem anderen Server kopiert, den Softlink entfernt und neu erstellt.
1. Kopieren Sie die Datei 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 neuesten.
2. rm libstdc ++. So.6
3. ln -s libstdc ++. So.6.0.17 libstdc ++. So.6 (im Verzeichnis / usr / lib64).
nJoy
quelle
Ich habe gerade mit einem ähnlichen Problem beim Erstellen der LLVM 3.7-Version konfrontiert. Überprüfen Sie zunächst, ob Sie die erforderliche Bibliothek auf Ihrem System installiert haben:
Fügen Sie dann den gefundenen Speicherort Ihrer Umgebungsvariablen $ LD_LIBRARY_PATH hinzu.
quelle
Manchmal steuern Sie den Zielcomputer nicht (z. B. muss Ihre Bibliothek auf einem gesperrten Unternehmenssystem ausgeführt werden). In diesem 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:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
... Angenommen, die Version ist3.4.19
.[4.8.3, 4.9.0)
.quelle
gcc version 4.8.1, der fehler scheint wie folgt:
Ich habe die libstdc ++. So.6.0.18 an der Stelle gefunden, an der ich gcc 4.8.1 eingehalten habe
Dann gefällt mir das
Problem gelöst.
quelle
Ich habe sie aus einem RPM ( RPM für libstdc ++ ) extrahiert und dann:
So stellen Sie das System so ein, dass nach den Bibliotheken im aktuellen Verzeichnis gesucht wird. Dann habe ich gerade mein Programm ausgeführt. Aber in meinem Fall habe ich eine einzige ausführbare Datei erhalten, die ich brauchte, es war keine systemweite Änderung.
quelle
Ich hatte ein ähnliches Problem und habe es behoben, indem ich statisch
libstdc++
auf das Programm verlinkt habe, das ich kompiliert habe:statt des üblichen
Es kann Probleme mit dieser Lösung geben, die mit dem Laden gemeinsam genutzter Bibliotheken zur Laufzeit zusammenhängen, aber ich habe mich nicht gründlich genug mit dem Problem befasst, um es zu kommentieren.
quelle
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.
quelle
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.
quelle
Ich hatte mehrere Versionen des gcc-Compilers installiert und musste eine neuere 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, um meinen Pfad zum 32-Bit-Bibliotheksverzeichnis anstelle des 64-Bit-Bibliotheksverzeichnisses (lib64) festzulegen. Da die Bibliotheken im 32-Bit-Verzeichnis nicht kompatibel waren, verwendete das System standardmäßig die ältere Version, die veraltet war.
Die Verwendung von -L für den Pfad, auf den ich verwies, gab Warnungen zum "Überspringen inkompatibler libstdc ++. Also bei der Suche nach -lstdc ++". Dies war der Hinweis, der mir half, das Problem endlich zu lösen.
quelle
Gleiches gilt für die gcc-Version
4.8.1 (GCC)
undlibstdc++.so.6.0.18
. Musste es hier/usr/lib/x86_64-linux-gnu
auf meine Ubuntu-Box kopieren .quelle
In meinem Fall hatte LD_LIBRARY_PATH zuerst / usr / lib64 vor / usr / local / lib64. (Ich habe llvm 3.9 gebaut).
Der neue gcc-Compiler, den ich zum Kompilieren von llvm 3.9 installiert habe, hatte Bibliotheken mit neueren GLIBCXX-Bibliotheken unter / usr / local / lib64. Daher habe ich LD_LIBRARY_PATH korrigiert, damit der Linker zuerst / usr / local / lib64 sieht.
Das hat dieses Problem gelöst.
quelle
Ich habe gerade -static-libstdc ++ beim Erstellen verwendet. w / damit kann ich das a.out ausführen
quelle
Zu Testzwecken:
Suchen Sie auf dem Originalcomputer die Bibliothek und kopieren Sie sie in dasselbe Verzeichnis wie die ausführbare Datei:
Kopieren Sie dann dieselbe Bibliothek auf den Zielcomputer und führen Sie die ausführbare Datei aus:
Hinweis: Der obige Befehl ist vorübergehend. Es ist keine systemweite Änderung.
quelle
Ich hatte zuvor das gleiche Problem und habe das Problem behoben. Die Schritte wurden in diesem Fehler "GLIBCXX_3.4.15" auf matlab gefunden
quelle