2016-04-02 11 views
2

ich die folgende Fehlermeldung erhalten, wenn mein Programm ausgeführt wird:.Programm sucht nach libstdC++ so.6 in falscher Stelle und scheint LD_LIBRARY_PATH zu ignorieren

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ... 

Ich weiß, dass /usr/lib64/libstdc++.so.6 die falsche Version ist, so dass ich hinzufügen der Weg auf die richtige Version zu LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-4.8.3/lib 

der Befehl:

strings /usr/local/gcc-4.8.3/lib/libstdc++.so.6 | grep GLIBCXX 

gibt mir:

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_FORCE_NEW 
GLIBCXX_DEBUG_MESSAGE_LENGTH 

jedoch der Fehler weiterhin, als ob das Programm nicht die neue Version sieht ich LD_LIBRARY_PATH hinzugefügt. Irgendwelche Ratschläge, was passieren könnte?

+0

Können Sie die Ausgabe von LDD buchen? –

+0

Sicher, ldd was? – user6130052

+0

ldd Ihre binäre –

Antwort

0

Das Problem, das auftritt, wird durch das Verknüpfen mit der falschen listdC++ - Bibliothek verursacht, die Sie bereits identifiziert haben. Sie exportieren nur libstdC++ bei 32bit und nicht die bei 64bit.

Versuchen Zugabe der libstdc++ in lib64 enthalten:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-4.8.3/lib:/usr/local/gcc-4.8.3/lib64 

Achten Sie darauf, die LD_LBRARY_PATH richtig eingestellt ist, bevor wird der Code kompiliert. Um zu überprüfen, ob die Binärdatei mit der korrekten libstdc++ verknüpft wurde, können Sie ldd verwenden. Die richtige Ausgabe sollte die folgende Zeile enthalten:

/lib/usr/local/gcc-4.8.3/lib64/libstdc++.so.6 
+0

danke, Hinzufügen von/usr/local/gcc-4.8.3/lib64 zu LD_LIBRARY_PATH löste mein Problem – user6130052

+0

Gern geschehen. –

Verwandte Themen