Frage

Die Readme mit dem neuen Xcode 3.2.1 dieser Woche enthalten sagt die folgende:

  • Statische Code-Analyse ist voll integriert in der Xcode IDE über das Erstellen und Analysieren Option unter dem Menü Erstellen oder über benutzerdefinierten Build-Einstellungen
  • GCC 4.2 ist der Standard-System-Compiler für das 10,6 SDK
  • Der optionale LLVM Compiler wird mit zwei verschiedenen Frontends enthalten - der Clang-Compiler ist ein Spitzen Parser, dass Angebote der Kompilierung mal dramatisch verbessert. Für maximale Kompatibilität nutzt die GCC LLVM Compiler das LLVM Back-End mit dem GCC 4.2-Parser.
  • Neue optionale Clang-LLVM 1.0-Compiler verwendet die viel schneller Clang Front-End-Parser gekoppelt mit dem LLVM Back-End-Compiler für die schnelle compiliert und schnell ausführbaren Code. Viele Projekte werden von dieser Compiler Kombination profitieren, obwohl GCC 4.2 noch das System standardmäßig ist. Der Clang-LLVM 1.0 Compiler 4.2 mit LLVM-GCC zurückgreifen, wenn es C ++ Code trifft.

Unser Unternehmen hat bestehende Projekte, die reine C, Objective-C und Objective-C ++ für den Desktop und iPhone. Kann jemand fassen Sie zusammen auf einem hohen Niveau sind die Unterschiede zwischen LLVM, GCC, CLANG, CLANG-LLVM et WordFoo. al. und erklären, was sie sind und wann sollten wir jeden und für das, was verwenden? Es wäre schön, Links zu müssen mehr eine ausführliche Erklärung, aber ich bin wirklich nur auf der Suche nach einer High-Level-Übersicht.

War es hilfreich?

Lösung

Auf den Punkt gebracht:

Compiler sind grundsätzlich in zwei Teile geteilt. Nämlich zum einen die Front-End, die der Parser und semantische Analyse für die Programmiersprache enthält. Das Front-End produziert eine Art von Zwischendarstellung des Codes. Dann gibt es das Backend, die das Zeug nimmt das Front-End produziert, optimiert sie, und schließlich Code erzeugt Montage.

  • GCC : gut bekannt Compiler, enthält sowohl Front-Ends für verschiedene Sprachen und Back-Ends für viele Prozessor Architekturen
  • LLVM : eine Reihe von Back-Ends für verschiedene Architekturen (und andere Low-Level-Sachen)
  • Klirren : ein neues Front-End für C, Objective-C und C ++; verwendet den LLVM-Back-Ends. Sie werden besser lesbar Fehler und Warnungen von Ihrem Compiler und kürzeren Kompilierungszeiten bekommen. Sie könnten auch Inkompatibilitäten oder Fehler stoßen; Klappern ist ein sehr junges Projekt.
  • LLVM-GCC: GCC-Front-End mit LLVM Back-End. LLVM Back-End ist schneller als GCC.

Klirren der (objektiv-) C ++ Unterstützung ist bei weitem nicht vollständig, so dass es llvm-gcc ruft, wenn es eine Quelldatei ++ C trifft. Es enthält auch den statischen Analysator, der jetzt in Xcode integriert ist. Manche Leute sagen, LLVM Back-End-Code besser als GCC erzeugt, aber die Leistung kann variieren. LLVM unterstützt auch Link-Zeitoptimierungen (die Sie in Xcode Projekteinstellungen aktivieren). Sie können schneller produzieren Code.

Apple will GCC mit Klappern in der Zukunft ersetzen, weil sie eine Politik hat gegen GPLv3 lizenzierte Code (GCC 4.2 ist die letzte Version, die unter GPLv2 lizenziert wird).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top