web-dev-qa-db-fra.com

Devrais-je utiliser libc ++ ou libstdc ++?

Je développe des exécutables d'interface de ligne de commande pour osx et linux à l'aide de c/c ++. Le projet se liera contre l'opencv. Devrais-je utiliser libc ++ ou libstdc ++?

78
Loozie

J'utiliserais la bibliothèque native pour chaque système d'exploitation, à savoir libstdc ++ sous GNU/Linux et libc ++ sous Mac OS X.

libc ++ n'est pas complet à 100% sous GNU/Linux, et son utilisation ne présente aucun avantage réel lorsque libstdc ++ est plus complet. En outre, si vous souhaitez créer un lien vers d'autres bibliothèques écrites en C++, elles auront certainement été créées avec libstdc ++. Vous devrez donc créer un lien avec celle-ci pour pouvoir les utiliser.

Plus d'infos ici sur la complétude de libc ++ sur différentes plateformes.

75
Jonathan Wakely

Les principales distributions Linux ne fournissent pas LLVM libc ++, car:

  1. Contrairement à Apple et FreeBSD, la GPL + 3 n’est pas un problème, il n’est donc pas nécessaire d’implémenter une autre pile ici.
  2. Des composants Linux ont été développés autour de GNU libstd ++ depuis des lustres. Certains d’entre eux ne reposent sur rien d’autre.
  3. Bien que libc ++ soit fort dans les nouvelles fonctionnalités, il a quelques problèmes avec le code hérité.

Si finalement libc ++ faisait partie des distributions, ce serait un composant facultatif. lier contre cela nécessitera probablement des options supplémentaires.

Comme Jonathan l'a dit, vous devriez utiliser n'importe quel outil inclus par défaut. Clang est sûr à utiliser sous Linux car il est configuré en remplacement de GCC, vous n'avez donc pas à vous soucier de deux compilateurs. De plus, puisque vous ciblez deux plates-formes, vous devriez jeter un oeil à cmake.

29
Mario Vazquez