39 votes

Xcode 3.2.1 Démystification de GCC CLANG et LLVM

Le fichier readme fourni avec le nouveau Xcode 3.2.1 cette semaine, dit le texte suivant:

  • L'analyse statique de code est pleinement intégré dans l'Xcode IDE via le Construire et Analyser une option dans le menu générer ou via les paramètres de génération personnalisée
  • GCC 4.2 est le système par défaut du compilateur pour 10,6 SDK
  • L'option du compilateur LLVM est inclus à l'aide de deux frontaux - le compilateur Clang est à la pointe de l'analyseur qui offre considérablement amélioré les temps de compilation. Pour un maximum de compatibilité, la GCC compilateur LLVM utilise la VERSION back-end avec la GCC 4.2 de l'analyseur.
  • Nouvelle option Clang-VERSION 1.0 compilateur utilise le plus rapide Clang avant la fin de l'analyseur couplée avec la VERSION back-end du compilateur rapide compile et rapide du code exécutable. De nombreux projets vont bénéficier de ce compilateur combinaison, bien que GCC 4.2 est toujours le système par défaut. La Clang-VERSION 1.0 compilateur va retomber en utilisant LLVM-GCC 4.2 lors de la rencontre avec le code C++.

Notre société a déjà des projets qui sont de pures C, Objective-C, Objective-C++ pour les ordinateurs de bureau et iphone. Quelqu'un peut-il résumer à un haut niveau, les différences entre LLVM, GCC, CLANG, CLANG-LLVM, WordFoo et. al. et d'expliquer ce qu'ils sont et quand il faut être à l'aide de chacun et pour quoi? Il serait agréable d'avoir des liens vers plus d'une explication détaillée, mais je suis vraiment à la recherche d'un haut niveau d'ensemble.

53voto

d0k Points 1890

En un mot:

Les compilateurs sont fondamentalement divisée en deux parties. L'un étant le front-end qui contient l'analyseur syntaxique et analyse sémantique du langage de programmation. Le front-end, produit une sorte de représentation intermédiaire de votre code. Puis il y a le backend qui prend les choses à l'avant-produit, il optimise, et finit par générer le code d'assemblée.

  • GCC: bien connu du compilateur, contient à la fois des front-ends pour les différentes langues et les back-ends pour de nombreuses architectures de processeur
  • LLVM: un ensemble de back-end pour les différentes architectures (et d'autres trucs)
  • clang: un nouveau front-end pour C, Objective-C, et C++; utilise la VERSION de back-end. Vous obtiendrez plus lisible les erreurs et les avertissements de votre compilateur et le plus court temps de compilation. Vous pouvez également rencontrer des incompatibilités ou de bugs, clang est un projet très jeune.
  • LLVM-GCC: GCC avant la fin avec LLVM back-end. LLVM back-end est plus rapide que de GCC.

clang est (Objectif)le support du C++ est loin d'être complète, donc il appelle llvm-gcc lorsqu'il rencontre un fichier source C++. Il contient également de l'analyseur statique qui est maintenant intégré à Xcode. Certaines personnes disent que LLVM back-end génère un code de meilleure qualité que du CCG, mais votre kilométrage peut varier. LLVM prend également en charge le lien-le temps des optimisations (que vous pouvez activer dans Xcode de paramètres du projet). Ils peuvent produire plus rapidement le code.

Apple veut remplacer GCC avec clang dans l'avenir parce qu'ils ont une politique de lutte contre licence GPLv3 code (GCC 4.2 est la dernière version sous licence GPLv2).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X