Ich habe eine statische Bibliothek, die mit gcc 3.4.3 kompiliert wurde. Ich würde das gerne in Code verwenden, der jetzt mit gcc-4 kompiliert wird. Ich habe vage gelesen, dass gcc-3 und gcc-4 Binärdateien nicht kompatibel sind und dass die Bibliothek neu kompiliert werden muss, aber nur Bestätigung dafür wollen. Gibt es nicht sowieso eine GCC-3-Bibliothek mit GCC-4 verwendet werden?
Es ist nicht immer eine Option, jemanden in der Organisation oder bei einem Lieferanten dazu zu bringen, seine Bibliothek auf gcc 4 zu aktualisieren, vor allem, wenn sie ihn aufgegeben haben.
Wenn C ++: vorausgesetzt, dass Sie in der Lage sind zu verknüpfen, können Sie zur Laufzeit in C ++ Standard-Bibliothek Vorlagencode, der Streams verwendet sprengen, wie Symbole von g ++ 4 generiert werden gegen Definitionen durch g ++ 3 generiert aufgelöst.
Diese Warnung wird möglicherweise beim Verknüpfen angezeigt:
/ usr / bin / ld: Warnung: libstdc ++. so.5, benötigt von (Legacy static lib), kann Konflikte mit libstdc ++. so.6
verursachenHier ist ein Beispiel, in das Sie kommen können: base class destructor ~ basic_stringbuf () (eigentlich eine Vorlage) kann in Ihrem unter g ++ 3 kompilierten Modul definiert werden, das fälschlicherweise vom Destruktor ~ basic_ostringstream () in libstdc ++ aufgerufen wird .6, die vom kompilierten Modul g ++ 4 aufgerufen wird. Ka-Boom.
Ich habe versucht, compat-libstdc ++ - 33, hatte aber kein Glück damit.
Das heißt, ich verbinde immer noch 32-bit gcc 3 era C-Bibliotheken in meine gcc 4.1.2 C ++ - Programme.
Tags und Links c c++ compatibility gcc4 gcc3