Maison > développement back-end > C++ > 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
Libérer: 2024-10-24 04:12:02
original
638 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal