Maison  >  Article  >  développement back-end  >  Quand l'indicateur -stdlib=libstdc est-il requis lors de la compilation ?

Quand l'indicateur -stdlib=libstdc est-il requis lors de la compilation ?

DDD
DDDoriginal
2024-10-24 04:12:02548parcourir

When is the -stdlib=libstdc   Flag Required During Compilation?

Quand la compilation nécessite-t-elle l'indicateur -stdlib=libstdc ?

L'indicateur -stdlib=libstdc ordonne au compilateur et à l'éditeur de liens d'utiliser l'implémentation de la bibliothèque standard libstdc pendant la compilation. Cependant, il n'est pas toujours nécessaire de spécifier explicitement cet indicateur.

Lors de l'utilisation de Linux ou de Modern GCC sur d'autres plates-formes

Pour la plupart des distributions Linux et des versions actuelles de GCC, libstdc est l'implémentation de la bibliothèque standard par défaut. Par conséquent, l'utilisation de l'indicateur -stdlib=libstdc n'est pas requise lors de la compilation du code C 11 sur ces plates-formes. Utilisez simplement les commandes suivantes :

g++ -std=c++11 input.cxx -o a.out (GNU compiler)
g++ -std=gnu++11 input.cxx -o a.out

Sur macOS avant Mavericks

Sur les versions macOS avant Mavericks, g était un lien symbolique vers clang . L'ancienne implémentation de libstdc d'Apple était la valeur par défaut. Pour utiliser libc , qui fournit le support de la bibliothèque C 11, l'indicateur -stdlib=libc était nécessaire :

g++ -std=c++11 -stdlib=libc++ input.cxx -o a.out (clang, not GNU compiler!)
g++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.out (clang, not GNU compiler!)
clang++ -std=c++11 -stdlib=libc++ input.cxx -o a.out
clang++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.out

Sur macOS depuis Mavericks

Sur macOS Mavericks et versions ultérieures , la libc est la valeur par défaut. Passer explicitement l'indicateur -stdlib=libstdc n'est pas nécessaire :

clang++ -std=c++11 input.cxx -o a.out
clang++ -std=gnu++11 input.cxx -o a.out

Exceptions

Il peut y avoir des cas spécifiques où l'utilisation explicite de l'indicateur -stdlib=libstdc est bénéfique :

  • Lors d'une liaison avec une bibliothèque externe qui nécessite libstdc pour des raisons de compatibilité
  • Lors de conflits de symboles entre libstdc et d'autres bibliothèques
  • À des fins de débogage ou de dépannage

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