Je développe des exécutables d'interface de ligne de commande pour osx et linux en utilisant c/c++. Le projet sera lié à opencv. Dois-je utiliser libc++ ou libstdc++ ?
Réponses
Trop de publicités?J'utiliserais la bibliothèque native pour chaque système d'exploitation, c'est-à-dire libstdc++ sur GNU/Linux et libc++ sur Mac OS X.
libc++ n'est pas complet à 100% sur GNU/Linux, et il n'y a pas de réel avantage à l'utiliser quand libstdc++ est plus complet. De plus, si vous voulez faire un lien vers d'autres bibliothèques écrites en C++, elles auront très certainement été construites avec libstdc++ et vous devrez donc faire un lien avec cette dernière pour les utiliser.
Plus d'informations aquí sur la complétude de libc++ sur diverses plateformes.
Les principales distributions Linux ne fournissent pas LLVM libc++, car :
- Contrairement à Apple et FreeBSD, la GPL+3 n'est pas un problème, donc pas besoin de d'implémenter une autre pile ici.
- Les composants Linux sont développés autour de GNU libstd++ depuis des années. Certains d'entre eux ne s'appuient sur rien d'autre.
- Bien que libc++ soit forte en nouvelles fonctionnalités, elle a quelques problèmes avec le code hérité.
Si libc++ est finalement intégré aux distributions, ce sera en tant que composant optionnel. L'édition de liens vers ce composant nécessitera probablement des options supplémentaires.
Comme Jonathan l'a dit, vous devriez utiliser l'outil qui est inclus par défaut. Clang est sûr à utiliser sous Linux car il est configuré comme un remplacement de GCC, donc dans cet aspect vous n'avez pas à vous soucier de deux compilateurs. Aussi, puisque vous ciblez deux plateformes, vous devriez jeter un coup d'oeil à cmake.