2014-03-19 6 views
37

Ich versuche festzustellen, ob der Aufbau und die Verwendung libcxxabi aus dem Projekt llvm unter Linux sinnvoll ist.Macht libcxxabi unter Linux Sinn? Was sind die Vorteile?

Mein Build von libcxxabi ist

ldd libc++abi.so.1.0 
    linux-vdso.so.1 => (0x00007fff2e0db000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd658f0d000) 
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fd658d05000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd65893c000) 
    libc++.so.1 => /path/where/clang/is // edited 
    /lib64/ld-linux-x86-64.so.2 (0x00007fd6593ab000) 
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd658465000) 

verknüpft und so ist es die gcc_s-Bibliothek, das GNU librt, und den einzigen wirklichen Unterschied ist die Tatsache, dass es libc++ über libstdc++ ist mit, aber gut, wie diese wirklich ist?

Angesichts der kritischen Rolle einer Abi-Bibliothek, sollte ich für libcxxabi unter einer solchen Plattform gehen?

Mein Problem ist es nicht darum, wie diese zu bauen, oder ob dies funktionieren wird, aber wenn dies eine gute Idee C++ ist - weise, welche Art von Leistungen kann ich vielleicht bekommen, oder welche Art von Leistungen, die Sie bekommen wenn Sie dies bereits verwenden.

+1

Ich finde es sehr seltsam, dass Ihre libcxxabi gegen libC++ verbindet. Es sollte umgekehrt sein. Wie für Ihre Frage. Es gibt wirklich keinen Grund, libcxxabi auf einem Linux-System zu verwenden, das immer noch auf libsupC++ angewiesen ist (statisch in libstdC++ eingebunden). Es ist nützlich, wenn Sie ein Nicht-GNU-Linux-System erstellen möchten. –

+1

Vielleicht sollte man einige Leistungsvergleiche mit anderen Standard-C++ - Bibliotheken durchführen? Auch bis GCC 5.1 war libstdC++ nicht konform mit C++ 11. Jetzt koexistieren die beiden Implementierungen im gemeinsamen Objekt, jedoch unter einem anderen Namensraum. –

Antwort

2

Sie sollten libcxxabi nicht direkt verwenden. Nach meinem Verständnis ist es eine Art Plattform-Abstraktionsbibliothek, die Low-Level-Funktionen zur Verfügung stellt, die zur Implementierung von libcxx benötigt werden.

Wenn Sie nach libcxx oder libstdC++ fragen, sind die Unterschiede hauptsächlich die Lizenz, die neuere Standardversion (das Clang-Projekt scheint bei der Implementierung der letzten C++ Revisionen etwas schneller zu sein) und die Tatsache, dass Sie zwei alternative Implementierungen haben.

Es scheint keinen dringenden Grund für eine dieser über dem anderen zu geben. Ich würde bei dem bleiben, der auf Ihrem System besser unterstützt wird. Beide Projekte zielen darauf ab, ABI-kompatibel zu sein, so dass es möglich sein sollte, entweder ohne Bruch zu arbeiten.