Je développe des exécutables d'interface de ligne de commande pour osx et linux en utilisant c / c ++. Le projet établira un lien avec opencv. Dois-je utiliser libc ++ ou libstdc ++?
Je développe des exécutables d'interface de ligne de commande pour osx et linux en utilisant c / c ++. Le projet établira un lien avec opencv. Dois-je utiliser libc ++ ou libstdc ++?
Réponses:
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 complète à 100% sous GNU / Linux, et il n'y a aucun réel avantage à l'utiliser lorsque libstdc ++ est plus complète. De plus, si vous souhaitez créer un lien vers d'autres bibliothèques écrites en C ++, elles auront presque certainement été construites avec libstdc ++, vous devrez donc créer un lien avec cela aussi pour les utiliser.
Plus d'informations ici sur l'exhaustivité de libc ++ sur différentes plates-formes.
std::ctype_base::mask
valeurs aux <ctype.h>
constantes dépend entièrement de la plate-forme. (Les fonctions intrinsèques du processeur sont fournies par le compilateur, la gestion des exceptions est effectuée par une couche ABI de bas niveau, mais les E / S sont généralement effectuées entièrement dans les bibliothèques C ++ et C, pas dans des éléments de bas niveau).
Les principales distributions Linux ne fournissent pas LLVM libc ++, car:
Si finalement libc ++ faisait partie des distributions, ce sera en tant que composant optionnel. la liaison avec elle nécessitera probablement des options supplémentaires.
Comme Jonathan l'a dit, vous devez utiliser n'importe quel outil 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 2 compilateurs. De plus, puisque vous ciblez deux plates-formes, vous devriez jeter un œil à cmake.
il est dit que la libc ++ a plus de messages d'erreur lisibles par l'homme sur les erreurs de modèle.