Fügen Sie den Pfad der Bibliothek zu LD_LIBRARY_PATH
hinzu Umgebungsvariable
TL;DR
GCC verlangt, dass Sie ihm manuell mitteilen, wo sich Ihre Bibliothek befindet, wenn es die richtige Version nicht finden kann, was auf verschiedene Arten geschehen kann. Man fügt es dem LD_LIBRARY_PATH
hinzu .
export LD_LIBRARY_PATH="/usr/local/lib64/:$LD_LIBRARY_PATH"
Für einige ist der Bibliothekspfad /usr/local/lib64/
. Andere haben den Bibliothekspfad /usr/lib/x86_64-linux-gnu/
gemeldet stattdessen für sie arbeiten.
Warum müssen wir die Bibliothek zu LD_LIBRARY_PATH
hinzufügen ?
Wenn Sie GCC kompilieren und installieren, legt es die Bibliotheken in eines dieser Verzeichnisse, aber das ist alles, was es tut. Gemäß den FAQs für libstdc++
, bedeutet der Fehler, den wir erhalten haben, dass der dynamische Linker die falsche Version von libstdc++
gefunden hat gemeinsame Bibliothek. Da der Linker die richtige Version nicht finden kann, müssen wir ihm mitteilen, wo der libstdc++
zu finden ist Bibliothek.
Der einfachste Weg, dies zu beheben, besteht darin, die Umgebungsvariable LD_LIBRARY_PATH zu verwenden, bei der es sich um eine durch Doppelpunkte getrennte Liste von Verzeichnissen handelt, in denen der Linker nach gemeinsam genutzten Bibliotheken sucht.
Es gibt auch andere Möglichkeiten, dieses Problem zu beheben. Diese und die anderen kurz erwähnten Lösungen finden Sie bei der Installation von gcc
wenn Sie die Ausgabe von make lesen:
Bibliotheken wurden installiert in:
/usr/local/lib/../lib32
Wenn Sie jemals mit installierten Bibliotheken in einem bestimmten Verzeichnis, LIBDIR, linken möchten, müssen Sie entweder libtool verwenden und den vollständigen Pfadnamen der Bibliothek angeben oder während des Linkens das `-LLIBDIR'-Flag verwenden und mindestens einen der folgenden Schritte ausführen Folgendes:
- LIBDIR während der Ausführung zur Umgebungsvariable `LD_LIBRARY_PATH' hinzufügen
- LIBDIR während des Linkens zur Umgebungsvariable `LD_RUN_PATH' hinzufügen
- benutze das Linker-Flag `-Wl,-rpath -Wl,LIBDIR'
- Lassen Sie Ihren Systemadministrator LIBDIR zu `/etc/ld.so.conf' hinzufügen
Weitere Informationen finden Sie in der Dokumentation des Betriebssystems zu gemeinsam genutzten Bibliotheken, wie z. B. in den Manpages zu ld(1) und ld.so(8).
Grr, das war einfach! Auch, "wenn Sie jemals zufällig gegen die installierten Bibliotheken verlinken wollen", im Ernst?
Ich hatte das gleiche Problem auf meinem Ubuntu 14.04, als ich versuchte, TopTracker zu installieren. Ich habe solche Fehler:
/usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:Version 'CXXABI_1.3.8' nicht gefunden (erforderlich für /usr/share/toptracker/bin/TopTracker)/ usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:Version „GLIBCXX_3.4.21“ nicht gefunden (erforderlich für /usr/share/toptracker/bin/TopTracker)/usr /share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:Version 'CXXABI_1.3.9' nicht gefunden (erforderlich für /usr/share/toptracker/bin/TopTracker)
Aber ich habe dann gcc Version 4.9 installiert und das Problem ist weg:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9