2010-12-12 31 views
5

蘋果正在推動LLVM和Clang很多。有傳聞稱,這是因爲蘋果希望放棄GCC(由於GPLv3許可證的問題),並切換到Clang。我應該開始使用C++ iPhone項目來定位Clang/LLVM嗎?

任何人都知道什麼時候會發生?

我開始了一個C++項目,我打算在iPhone上移植,並且不知道我是否應該使用C++ 0x功能(至少是Clang支持的功能),還是我應該寫代碼與GCC 4.1兼容...

+0

到目前爲止,Clang只支持一些C++ 0x功能,我不認爲它支持任何不支持GCC的功能。 – delnan 2010-12-12 14:36:05

+0

那麼,蘋果使用GCC 4.1和Clang比GCC 4.1更成熟(至少對於支持的功能)。 – peoro 2010-12-12 14:40:27

+0

除Apple使用GCC 4.2.1而不是4.1。 – jer 2010-12-12 14:47:26

回答

13

傳言說,這是因爲蘋果希望 下降GCC(由於與GPLv3的 許可問題),並切換到鏘。

這不是傳言,這是蘋果的陳述立場。 GCC的GPL許可證可防止Apple將編譯器/解析器徹底集成到其開發工具中。使用Clang/LLVM,他們沒有這種限制,因此能夠使用他們的工具做更多的事情(從Xcode 3.2中集成的Clang靜態分析器開始,並進一步使用Xcode 4)。

除了許可證問題之外,Clang/LLVM的構建速度比GCC快得多,並且在Apple的基準測試中(以及我自己的經驗)創建了比GCC更好的可執行文件。它也會生成更多有用的錯誤消息。它以模塊化的方式進行架構設計,與GCC的前進相比,這也使它更容易維護和擴展。

Apple聲明在Xcode 4即將推出的LLVM Compiler 2.0中支持除導出模板之外的所有C++特性,編譯器現在已經自主託管了一小段時間。如果您不能等待,或者不想嘗試Xcode 4開發人員預覽版,則可以通過從main LLVM site中獲取源代碼來查看編譯器。

我強烈建議您觀看會議300免費提供的WWDC 2010 videos - 「開發人員工具聯盟狀態」和會話312 - 「LLVM編譯器中的新增內容」,他們展示了他們當前正在使用LLVM編譯器進行的工作。時間方面,只有蘋果公司可以告訴你他們什麼時候會做什麼事情,甚至他們也無法確切地知道什麼時候準備好黃金時間。您可以根據Xcode開發人員預覽的改進軌跡進行有根據的猜測,但僅此而已。然而,Clang/LLVM是蘋果公司走向的方式,那麼爲什麼不計劃呢?

+0

很棒的回答。另外,Xcode 3.2.5使用LLVM 1.6(從以前的3.2.x版本1.5開始)。 – rjstelling 2010-12-12 15:49:36

+0

實際上,從Phoronix的基準測試中,似乎gcc 4.6生成的二進制文件的表現好於Clang。但我有希望:) – 2011-02-07 19:40:17

+0

@Matthieu - 我已經看到了這些基準測試,很難與Apple的OpenSSL基準測試(與GCC相比,性能提高5%-25%)和iPhone(顯示性能提升12%-60%)。 Apple確實使用了定製的GCC版本,所以也許這跟不上最新的編譯器版本,或者說Phoronix的設置有些不同。它也似乎Phoronix自己受到批評:http://www.osnews.com/thread?449249,雖然我沒有看到任何明顯錯誤的測試。 – 2011-02-07 20:31:24

相關問題