Maison >développement back-end >C++ >Quand spécifier \'-stdlib=libstdc \' lors de la compilation avec GCC ?

Quand spécifier \'-stdlib=libstdc \' lors de la compilation avec GCC ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 02:20:02542parcourir

When to Specify

Quand utiliser -stdlib=libstdc

Lors de la compilation avec gcc, l'indicateur -stdlib=libstdc spécifie la bibliothèque standard C à utiliser. Dans la plupart des cas, le compilateur utilisera automatiquement libstdc , la bibliothèque GNU C, par défaut. Cependant, il existe des cas où il peut être nécessaire de spécifier explicitement -stdlib=libstdc .

Comportement spécifique au compilateur

Sous Linux, toutes les principales distributions utilisent libstdc comme La bibliothèque C par défaut et les versions récentes de GCC prennent en charge C 11 par défaut. Pour compiler du code C 11, vous pouvez utiliser soit :

  • g -std=c 11 input.cxx -o a.out
  • g -std=gnu 11 input.cxx - o a.out

Sur OS X avant Mavericks, g était un alias pour clang , et l'ancienne libstdc d'Apple était la valeur par défaut. Pour utiliser libc , qui inclut la prise en charge de la bibliothèque C 11, transmettez -stdlib=libc . Les options de compilation incluent :

  • g -std=c 11 -stdlib=libc input.cxx -o a.out
  • g -std=gnu 11 -stdlib=libc input.cxx -o a.out
  • clang -std=c 11 -stdlib=libc input.cxx -o a.out
  • clang -std=gnu 11 -stdlib=libc input.cxx -o a.out

OS X Mavericks et versions ultérieures

Depuis OS X Mavericks, la libc est devenue la bibliothèque C par défaut. Vous devez vous abstenir d'utiliser l'indicateur -stdlib= dans ce cas. Notamment, Xcode 10 et versions ultérieures ne prennent plus en charge la compilation avec libstdc .

Options de compilation recommandées

  • Linux : utilisez g -std=c 11 input.cxx - o a.out ou g -std=gnu 11 input.cxx -o a.out
  • OS X (avant Mavericks) : utilisez g -std=c 11 -stdlib=libc input.cxx -o a. out ou clang -std=c 11 -stdlib=libc input.cxx -o a.out
  • OS X (Mavericks et versions ultérieures) : utilisez clang -std=c 11 input.cxx -o a.out ou clang -std=gnu 11 input.cxx -o a.out

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn