it-swarm.com.de

/usr/lib/x86_64-linux-gnu/libstdc++.so.6: Version CXXABI_1.3.8 'nicht gefunden

Ich habe kürzlich nach Hilfe gefragt https://stackoverflow.com/questions/20253515/no-idea-as-to-usr-lib-x86-64-linux-gnu-libstdc-so-6-version-cxxabi-1 -3-8 und es wurde abgelehnt und geschlossen (ich weiß nicht warum)

Es stellt sich heraus, dass "make install" - das make-Ziel, das installiert wird und das Ziel "install-target-libstdc ++ v3" impliziert, nicht wirklich bedeutet, dass Sie bereit sind. 

Ich habe mich eine Weile lang gefragt, was ich falsch gemacht habe, weil ich davon ausging, dass ein solches Markenziel das für mich tun würde.

Ich hoffe, diese Antwort hilft mindestens einer anderen Person.

55
Alec Teal

Für alle, die ein ähnliches Problem haben, führen Sie Folgendes aus:

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

Wenn Sie GCC kompilieren und installieren, werden die Bibliotheken hier eingefügt, aber das ist alles. Wie in den FAQs ( http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths ) angegeben, müssen Sie sie hinzufügen. 

Ich ging davon aus, dass "Wie kann ich sicherstellen, dass die dynamisch verknüpfte Bibliothek gefunden wird?", Bedeutet "Wie kann ich sicherstellen, dass sie immer gefunden wird" und nicht "sie nicht gefunden wird, Sie müssen dies tun"

Für diejenigen, die sich nicht die Mühe machen, ein Präfix festzulegen, ist dies/usr/local/lib64

Sie können dies kurz bei der Installation von gcc finden, wenn Sie die make-Ausgabe lesen:

Libraries have been installed in:
   /usr/local/lib/../lib32
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages. 

Grr das war einfach! Auch "wenn Sie jemals gegen die installierten Bibliotheken verlinken wollen" - ernsthaft?

35
Alec Teal

Ich hatte das gleiche Problem auf meinem Ubuntu 14.04, als ich versuchte, TopTracker zu installieren. Ich habe solche Fehler bekommen:

/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)

Ich habe dann die gcc 4.9 Version 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
18
Footniko

Ich habe die richtige Lösung hier .

Der beste Weg, um gcc-4.9 korrekt zu installieren und als Standard-gcc-Version festzulegen, verwenden Sie:

Sudo add-apt-repository ppa:ubuntu-toolchain-r/test
Sudo apt-get update
Sudo apt-get install gcc-4.9 g++-4.9
Sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9

Der --slave mit g ++ bewirkt, dass g ++ zusammen mit gcc auf dieselbe Version umgestellt wird. Zu diesem Zeitpunkt ist gcc-4.9 jedoch Ihre einzige Version, die in Update-Alternativen konfiguriert ist. Fügen Sie also 4.8 zu Update-Alternativen hinzu. Es gibt also eine Alternative, indem Sie Folgendes verwenden:

Sudo apt-get install gcc-4.8 g++-4.8
Sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8

Dann können Sie überprüfen, welche Einstellung eingestellt ist, und mit Hilfe von:

Sudo update-alternatives --config gcc

ANMERKUNG: Sie könnten die Installation des PPA-Repositorys überspringen und einfach /usr/bin/gcc-4.9-base verwenden, aber ich bevorzuge die neuen aktualisierten Toolchains.

6
Yuliia Ashomok

Diese Lösung funktioniert in meinem Fall. Ich verwende ubuntu 16.04, VirtualBox 2.7.2 und genymotion 2.7.2 Der gleiche Fehler tritt in meinem System auf, dem ich einfachen Schritt gefolgt bin und mein Problem wurde gelöst 

1. $ LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
2. $ export LD_LIBRARY_PATH
3. $ Sudo apt-add-repository ppa:ubuntu-toolchain-r/test
4. $ Sudo apt-get update
5. $ Sudo apt-get install gcc-4.9 g++-4.9

Ich hoffe das wird für dich funktionieren

2
Vipin Jain

Hatte den gleichen Fehler bei der Installation von PhantomJS auf Ubuntu 14.04 64bit mit gcc-4.8 (CXXABI_1.3.7) 

Ein Upgrade auf gcc-4.9 (CXXABI_1.3.8) hat das Problem behoben. HOWTO: https://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-4-9-on-ubuntu-14-04

1
Marek Tichy

Ich habe dieses Problem auf meinem Ubuntu-64-System entdeckt, als ich versuchte, fst als solches in Python zu importieren:

    Python 3.4.3 |Continuum Analytics, Inc.| (default, Jun  4 2015, 15:29:08)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import fst
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ogi/miniconda3/lib/python3.4/site-packages/pyfst-0.2.3.dev0-py3.4-linux-x86_64.Egg/fst/__init__.py", line 1, in <module>
    from fst._fst import EPSILON, EPSILON_ID, SymbolTable,\
ImportError: /home/ogi/miniconda3/lib/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/local/lib/libfst.so.1)

Ich lief dann:

[email protected]:~/miniconda3/lib$ find ~/ -name "libstdc++.so.6"
/home/ogi/miniconda3/lib/libstdc++.so.6
/home/ogi/miniconda3/pkgs/libgcc-5-5.2.0-2/lib/libstdc++.so.6
/home/ogi/miniconda3/pkgs/libgcc-4.8.5-1/lib/libstdc++.so.6
find: `/home/ogi/.local/share/jupyter/runtime': Permission denied
[email protected]:~/miniconda3/lib$

mv /home/ogi/miniconda3/lib/libstdc++.so.6 /home/ogi/miniconda3/libstdc++.so.6.old
cp /home/ogi/miniconda3/libgcc-5-5.2.0-2/lib/libstdc++.so.6 /home/ogi/miniconda3/lib/

Zu diesem Zeitpunkt konnte ich dann die Bibliothek laden

[email protected]:~/miniconda3/lib$ python
Python 3.4.3 |Continuum Analytics, Inc.| (default, Jun  4 2015, 15:29:08)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import fst
>>> exit()
0
Ogi Moore

In meinem Fall fehlte gcc 6

Sudo apt-get install gcc-6 g++-6 -y

0
Jose Ospina

Was die anderen Antworten nahelegen, wird für das fragliche Programm funktionieren, Es kann jedoch dazu führen, dass andere Programme beschädigt werden und woanders eine unbekannte Abhängigkeit besteht. Es ist besser, ein kleines Wrapper-Skript zu erstellen:

#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
program_needing_different_run_time_library_path

Dadurch wird das in Warum LD_LIBRARY_PATH ist schlecht beschriebene Problem weitgehend vermieden, indem die Auswirkungen auf das Programm beschränkt werden, das sie benötigt.

Beachten Sie, dass trotz der Namen LD_RUN_PATH zur Link-Zeit arbeitet und nicht böse ist, während LD_LIBRARY_PATH sowohl für Link als auch zur Laufzeit funktioniert (und is evil :).

0
Britton Kerin