簡體   English   中英

Xcode 3.2.1 GCC CLANG和LLVM去神秘化

[英]Xcode 3.2.1 GCC CLANG and LLVM demystification

本周新Xcode 3.2.1附帶的自述文件如下:

  • 靜態代碼分析通過Build菜單下的Build and Analyze選項或自定義構建設置完全集成在Xcode IDE中
  • GCC 4.2是10.6 SDK的默認系統編譯器
  • 使用兩個不同的前端包含可選的LLVM編譯器 - Clang編譯器是一個前沿解析器,可以顯着改善編譯時間。 為了獲得最大兼容性,GCC LLVM編譯器將LLVM后端與GCC 4.2解析器結合使用。
  • 新的可選Clang-LLVM 1.0編譯器使用速度更快的Clang前端解析器與LLVM后端編譯器相結合,實現快速編譯和快速可執行代碼。 雖然GCC 4.2仍然是系統默認值,但許多項目都將受益於此編譯器組合。 Clang-LLVM 1.0編譯器在遇到C ++代碼時將回退到使用LLVM-GCC 4.2。

我們公司現有的項目是純C,Objective-C和Objective-C ++,適用於台式機和iphone。 有人可以在高層次上總結LLVM,GCC,CLANG,CLANG-LLVM,WordFoo等的差異。 人。 並解釋它們是什么以及我們何時應該使用它們以及用於什么? 鏈接到更詳細的解釋會很好,但我真的只是在尋找一個高級概述。

簡而言之:

編譯器基本上分為兩部分。 一個是包含編程語言的解析器和語義分析的前端。 前端產生代碼的某種中間表示。 然后是后端,它接收前端產生的東西,優化它,最終生成匯編代碼。

  • GCC :眾所周知的編譯器,包含各種語言的前端和許多處理器體系結構的后端
  • LLVM :各種架構(以及其他低級別的東西)的一組后端
  • clang :C,Objective-C和C ++的新前端; 使用LLVM后端。 您將從編譯器獲得更多可讀錯誤和警告,並縮短編譯時間。 您可能還會遇到不兼容或錯誤; clang是一個非常年輕的項目。
  • LLVM-GCC:GCC的前端,LLVM的后端。 LLVM的后端比GCC更快。

clang(Objective-)C ++支持遠未完成,因此在遇到C ++源文件時會調用llvm-gcc。 它還包含現在集成到Xcode中的靜態分析器。 有人說LLVM的后端產生比GCC更好的代碼,但你的里程可能會有所不同。 LLVM還支持鏈接時優化(您可以在Xcode的項目設置中啟用)。 它們可能產生更快的代碼。

Apple希望將來用GCC代替GCC,因為他們有針對GPLv3許可代碼的政策(GCC 4.2是根據GPLv2許可的最后一個版本)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM