在最新的iOS SDK中,苹果提供了三种编译器选项:GCC、LLVM with Clang和LLVM-GCC.我或多或少理解这三个词的意思,LLVM和Clang是什么,等等.我不知道这对iPhone开发者在实践中意味着什么.截至2011年1月,我现在应该使用哪一种?LLVM是否足够成熟,我可以安全地使用它,而不会经常遇到错误?切换到LLVM还有其他缺点吗?如果是这样,那么速度优势是否超过了它们?除了速度,还有其他原因需要切换吗?
在最新的iOS SDK中,苹果提供了三种编译器选项:GCC、LLVM with Clang和LLVM-GCC.我或多或少理解这三个词的意思,LLVM和Clang是什么,等等.我不知道这对iPhone开发者在实践中意味着什么.截至2011年1月,我现在应该使用哪一种?LLVM是否足够成熟,我可以安全地使用它,而不会经常遇到错误?切换到LLVM还有其他缺点吗?如果是这样,那么速度优势是否超过了它们?除了速度,还有其他原因需要切换吗?
Update:因为人们仍然在寻找这个答案,我觉得我应该提供一个合适的更新.到目前为止,我希望大家都清楚,在编程时,Clang绝对是一种方式,在较新版本的Xcode中,Clang是默认的编译器,支持ARC和新的和即将出现的语言构造(数组和字典订阅、文本等).几乎完全没有理由再使用GCC编译了,对于使用ARC和新特性的代码库来说,使用普通GCC不再相关或可能(LLVM-GCC可能支持这些特性,但现在Clang已经完全稳定了,它与Clang相比没有优势).
到目前为止(在Xcode 4.0测试版中包含LLVM-2.0),LLVM已经足够成熟,可以用于生产代码.它的编译速度比GCC快一点,生成的代码也更快,所以尽可能地使用它(如果有更好的方法,尽量避免使用GCC).标准的Xcode 3.2.5安装包含LLVM-1.6(不是最新版本),因此我建议运行一些速度测试,看看GCC和LLVM之间是否有明显的差异,或者从源代码编译Clang并获得最新版本.
基本上,不再需要GCC,LLVM+Clang就足够了.