31 Stimmen

Link mit einer älteren Version von libstdc++

Nachdem ich eine neue Build-Maschine installiert hatte, stellte ich fest, dass sie mit 6.0.10 der Standard-C++-Bibliothek kam

-rw-r--r--  1 root root 1019216 2009-01-02 12:15 libstdc++.so.6.0.10

Viele unserer Zielmaschinen verwenden jedoch immer noch eine ältere Version von libstdc++, zum Beispiel:

-rwxr-xr-x 1 root root  985888 Aug 19 21:14 libstdc++.so.6.0.8

Offensichtlich hat sich die ABI in diesen letzten beiden 0.0.1's geändert, da der Versuch, ein Programm auszuführen, zu folgendem Ergebnis führt

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

Ich habe versucht, explizit eine ältere Version von gcc zu installieren, aber das hat nicht geholfen. Das Aufrüsten der Zielmaschinen liegt nicht in meiner Kontrolle, also keine Option. Wie kann ich sicherstellen, dass meine Builds auf Maschinen mit einer älteren libstdc++ funktionieren?

Ich habe im apt-cache nach älteren libstdc++-Versionen gesucht, die installiert werden können, aber anscheinend sind keine älteren Versionen von 6 verfügbar?

1voto

Rodrigo Punkte 71

Arbeiten Sie für mich: setzen Sie diese Flags:

-Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -Wl,-Bstatic -lgcc -Wl,-Bdynamic -static

Wenn ich nur -static-libstdc++ -static einfüge, funktioniert es nicht für mich.

0voto

Tom Punkte 20377

Hast du schon versucht, es einfach in die Liste der Quellen aufzunehmen? Das setzt voraus, dass du die Bibliothek tatsächlich installiert hast!

g++ /usr/lib/libstdc++.so.6.0.8 source1.cpp source2.cpp

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X