2016-05-30 14 views
1

Wir versuchen, OCCI mit GCC zu verwenden. OCCI wird mit dem Sun Studio Compiler kompiliert. Gibt es eine Möglichkeit, OCCI mit GCC anstelle von Sun Native Compiler CC zu verwenden?OCCI mit GCC in SOLARIS

+0

Sie müssen es versuchen. C++ ABI ist komplex und es kann zu Problemen kommen. – ibre5041

+0

Haben wir neben der Third-Party-Bibliothek irgendwelche Oracle-Bibliotheken, um dieses Problem zu lösen? –

+0

Meine persönliche Meinung ist, dass es besser ist, andere Open-Source-C++ OCI zu verwenden. Als OCCI. – ibre5041

Antwort

0

Sie können effektiv mehrere C++ - Laufzeitbibliotheken nicht mischen.

Eine C++ - Laufzeitimplementierung ist äußerst komplex. Dieser Beitrag beschreibt einige der Komplexität:

Stability of the C++ ABI: Evolution of a Programming Language

Die C++ ABI

Die C++ ABI die C ABI enthält.Darüber hinaus umfasst es die folgenden Merkmale:

  • Aufbau hierarchischer Klassenobjekte, das heißt, Basisklassen und virtuelle Basisklassen

  • Layout Zeiger-to-Mitglied

  • Passing von versteckten Funktionsparametern (z. B. dies)

  • So rufen Sie eine virtuelle Funktion auf:

    • Vtable Inhalt und das Layout

    • Lage in Objekte von Zeigern

    • Finding Einstellung für die dieser Zeiger

  • Finding Basisklasse Offsets vtables

  • Aufruf einer Funktion über Pointer-to-Member

  • Verwalten Vorlageninstanzen

  • Externe Schreibweise von Namen ("name Mangeln")

  • Aufbau und Zerstörung von statischen Objekten

  • Werfen und Fangen Ausnahmen

  • Einige Details die Standardbibliothek:

    • Implementierung definiert Details

    • Typeinfo und Laufzeit-Compiler Typinformation

    • Inline-Funktion Zugriff auf Mitglieder

Sie können auch in verschiedenen C hinzufügen ++ implementieren Anders ausgedrückt, es ist effektiv unmöglich, OCCI direkt mit GCC unter Solaris zu verwenden.

Sie könnten etwas arbeiten, aber alles, was Sie tun, wird im besten Fall äußerst zerbrechlich sein. Das nächste Betriebssystem- oder C++ - Laufzeitupdate kann Probleme verursachen, und Sie können das Problem möglicherweise nicht beheben.

Sofern Sie nicht sehr einfache Anwendungen schreiben, empfehle ich dringend, nur den Solaris Studio Compiler zu verwenden - und sich mit der gesamten Tool-Suite vertraut zu machen, die Performance Profiling, Speicherprüfung und sogar Race Condition Detection umfasst ist meiner Meinung nach den Tools überlegen, die mit GCC verwendet werden.

+0

Der Solaris Studio (SS) -Compiler vermisst mehrere GCC-Funktionen, z. Es hat nichts, was dem Warnungsmodus des GCC nahe kommt. Es gibt keinen Stack-Protector, keinen Fortify-Source-Support. Wenn Sie GCC/Linux Studio/Solaris vergleichen, sind GCCs verschiedene Desinfektionsmittel (Adresse, undefiniertes Verhalten, ...) für die Speicherüberprüfung, Erkennung von Rennbedingungen usw. definitiv besser als die von SS. Ähnliche Dinge können über das Profiling gesagt werden. Darüber hinaus hat SS Schwierigkeiten, aktuelle C++ - Standards zu unterstützen und GCC-Erweiterungen nachzuholen. – maxschlepzig

+0

@maxschlepzig * sind dem, was man mit SS bekommt, definitiv überlegen * Zumindest habe ich klargestellt, dass meine Vorliebe eine Meinung ist und sie nicht mit einer Tatsache verwechselt. FWIW, zuletzt habe ich GCC auf SPARC geschaut noch fehlte irgendwas wie ['-xmemalign = 1i'] (https://docs.oracle.com/cd/E19205-01/819-5265/bjavc/index.html) , also ist der Balken zum Schreiben von Arbeitscode auf SPARC mit GCC viel höher. –