sind Gcc-3-Binärdateien, die mit gcc-4 kompatibel sind

9

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?

    
Abhijith 06.05.2011, 15:24
quelle

1 Antwort

3

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

verursachen

Hier 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.

    
Erik Olson 09.05.2011, 19:58
quelle

Tags und Links