2010-11-04 362 views

回答

3

他們都做同樣的事情,產生可以鏈接在一起構建程序(或共享庫)的可執行目標代碼。他們只是以不同的方式做到這一點。

  1. gcc是一個悠久的老編譯器,它在牙齒上變得有點長,但仍然是幾乎整個開源世界的主要力量。它也是現存最便攜的編譯器。
  2. LLVM-GCC是LLVM項目的一個組件,它使用gcc解析器前端和LLVM代碼生成後端。
  3. Clang是使用LLVM後端的特定於LLVM的前端。它本質上是一個潔淨室編譯器,它承諾編譯速度比gcc更快,編譯效率更高,全部來自更小和更乾淨的代碼庫(謝謝@dreamlax)。

關於此問題的更多信息,請登錄LLVM網站。

+1

Clang的源代碼更清潔。我曾經看過GCC源代碼,但仍未完全恢復;我仍然偶爾做惡夢。 – dreamlax 2010-11-04 09:01:02

+0

LLVM-gcc使用gcc前端和LLVM後端,而不是其他方式。 – JeremyP 2010-11-04 09:15:39

+0

@JeremyP:感謝您的糾正。 – 2010-11-04 09:25:05

3
  • gcc:GNU Compiler Collection。非常便攜的編譯器,適用於多種不同語言根據GPL授權。
  • LLVM-gcc:使用GCC的前端解析程序代碼,但使用LLVM生成機器碼。
  • Clang:使用LLVM生成機器碼的類似C語言(C,C++,Objective-C)的新前端。

Apple建議您始終使用Clang。 Clang的主要優點是速度更快,能夠產生更好的診斷信息(警告和錯誤)。此外,來自clang的生成代碼通常比來自GCC的代碼更快。

Xcode 3附帶的Clang版本尚不支持C++(或Objective-C++),因此Xcode將使用LLVM-GCC for C++。

這是Clang和GCC的更多detailed comparison

+0

Apple建議您使用clang嗎?當前生產的Xcode(3.2.x)默認爲gcc。這表明該建議仍然適用於gcc生產。毫無疑問,這將改變在不久的將來 – JeremyP 2010-11-04 09:18:19

+0

蘋果確實建議你使用鏗鏘聲,如果可以的話。默認情況下仍然是GCC,因爲有相當數量的代碼不能在叮噹中使用(而且也可能永遠不會),並且Apple正在努力避免混淆開發人員。您可以預計,未來的某個時間點,默認設置會變爲叮噹聲。 – 2010-11-04 09:19:57

相關問題