Domanda

Il file Readme incluso con il nuovo Xcode 3.2.1 questa settimana dice quanto segue:

  • L'analisi del codice statico è completamente integrata nell'IDE Xcode tramite l'opzione Compila e analizza nel menu Compila o tramite impostazioni di compilazione personalizzate
  • GCC 4.2 è il compilatore di sistema predefinito per l'SDK 10.6
  • Il compilatore LLVM opzionale è incluso utilizzando due diversi front-end: il compilatore Clang è un parser all'avanguardia che offre tempi di compilazione notevolmente migliorati.Per la massima compatibilità, il compilatore GCC LLVM utilizza il back-end LLVM con il parser GCC 4.2.
  • Il nuovo compilatore opzionale Clang-LLVM 1.0 utilizza il parser front-end Clang molto più veloce abbinato al compilatore back-end LLVM per compilazioni veloci e codice eseguibile veloce.Molti progetti trarranno vantaggio da questa combinazione di compilatori, sebbene GCC 4.2 sia ancora l'impostazione predefinita del sistema.Il compilatore Clang-LLVM 1.0 tornerà a utilizzare LLVM-GCC 4.2 quando incontra codice C++.

La nostra azienda ha progetti esistenti che sono puro C, Objective-C e Objective-C++ per desktop e iPhone.Qualcuno può riassumere ad alto livello le differenze tra LLVM, GCC, CLANG, CLANG-LLVM, WordFoo et.al.e spiegare cosa sono e quando dovremmo usarli ciascuno e per cosa?Sarebbe bello avere collegamenti a spiegazioni più dettagliate, ma in realtà sto solo cercando una panoramica di alto livello.

È stato utile?

Soluzione

In poche parole:

I compilatori sono fondamentalmente divisi in due parti.Uno è il front-end che contiene il parser e l'analisi semantica per il linguaggio di programmazione.Il front-end produce una sorta di rappresentazione intermedia del tuo codice.Poi c'è il backend che prende il materiale prodotto dal front-end, lo ottimizza e alla fine genera il codice assembly.

  • CCG:compilatore ben noto, contiene sia front-end per vari linguaggi che back-end per molte architetture di processore
  • LLVM:un insieme di back-end per varie architetture (e altre cose di basso livello)
  • clangore:un nuovo front-end per C, Objective-C e C++;utilizza i back-end LLVM.Otterrai errori e avvisi più leggibili dal compilatore e tempi di compilazione più brevi.Potresti anche riscontrare incompatibilità o bug;clang è un progetto molto giovane.
  • LLVM-GCC:Il front-end di GCC con il back-end di LLVM.Il back-end di LLVM è più veloce di quello di GCC.

Il supporto (Objective-)C++ di clang è lungi dall'essere completo, quindi chiama llvm-gcc quando incontra un file sorgente C++.Contiene anche l'analizzatore statico che ora è integrato in Xcode.Alcune persone dicono che il back-end di LLVM genera codice migliore di quello di GCC, ma il tuo chilometraggio può variare.LLVM supporta anche le ottimizzazioni del tempo di collegamento (che puoi abilitare nelle impostazioni del progetto Xcode).Potrebbero produrre codice più veloce.

Apple vuole sostituire GCC con clang in futuro perché ha una politica contro il codice concesso in licenza GPLv3 (GCC 4.2 è l'ultima versione concessa in licenza con GPLv2).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top