Ich entwickle ausführbare Dateien für die Befehlszeilenschnittstelle für OSX und Linux mit c / c ++. Das Projekt wird gegen opencv verlinkt. Soll ich libc ++ oder libstdc ++ verwenden?
Ich entwickle ausführbare Dateien für die Befehlszeilenschnittstelle für OSX und Linux mit c / c ++. Das Projekt wird gegen opencv verlinkt. Soll ich libc ++ oder libstdc ++ verwenden?
Antworten:
Ich würde die native Bibliothek für jedes Betriebssystem verwenden, dh libstdc ++ unter GNU / Linux und libc ++ unter Mac OS X.
libc ++ ist unter GNU / Linux nicht zu 100% vollständig, und es gibt keinen wirklichen Vorteil, es zu verwenden, wenn libstdc ++ vollständiger ist. Wenn Sie eine Verknüpfung zu anderen in C ++ geschriebenen Bibliotheken herstellen möchten, wurden diese mit ziemlicher Sicherheit mit libstdc ++ erstellt, sodass Sie auch eine Verknüpfung herstellen müssen, um sie zu verwenden.
Weitere Informationen hier zur Vollständigkeit von libc ++ auf verschiedenen Plattformen.
std::ctype_base::mask
Werten zu <ctype.h>
Konstanten vollständig plattformabhängig. (Die CPU-Eigenschaften werden vom Compiler bereitgestellt. Die Ausnahmebehandlung wird von einer ABI-Ebene auf niedriger Ebene durchgeführt, die E / A-Vorgänge werden jedoch normalerweise vollständig in den C ++ - und C-Bibliotheken ausgeführt, nicht auf niedriger Ebene.)
Wichtige Linux-Distributionen bieten LLVM libc ++ nicht an, weil:
Wenn libc ++ schließlich Teil von Distributionen wurde, wird es als optionale Komponente verwendet. Das Verknüpfen dagegen erfordert wahrscheinlich zusätzliche Optionen.
Wie Jonathan sagte, sollten Sie jedes Tool verwenden, das standardmäßig enthalten ist. Die Verwendung von Clang ist unter Linux sicher, da es als GCC-Ersatz konfiguriert ist. In diesem Aspekt müssen Sie sich also nicht um zwei Compiler kümmern. Da Sie auf zwei Plattformen abzielen, sollten Sie auch einen Blick auf cmake werfen.
Es wird gesagt, dass libc ++ mehr lesbare Fehlermeldungen zu Vorlagenfehlern enthält.