Xcode 3.2.1 GCC CLANG and LLVM demystification

后端 未结 1 776
故里飘歌
故里飘歌 2020-12-13 04:23

The readme included with the new Xcode 3.2.1 this week says the following:

  • Static code analysis is fully integrated within the Xcode IDE via the Build and Anal
1条回答
  •  遥遥无期
    2020-12-13 04:49

    In a nutshell:

    Compilers are basically split into two parts. One being the front-end that contains the parser and semantic analysis for the programming language. The front-end produces some kind of intermediate representation of your code. Then there's the backend which takes the stuff the front-end produced, optimizes it, and eventually generates assembly code.

    • GCC: well known compiler, contains both front-ends for various languages and back-ends for many processor architectures
    • LLVM: a set of back-ends for various architectures (and other low-level stuff)
    • clang: a new front-end for C, Objective-C, and C++; uses the LLVM back-ends. You'll get more readable errors and warnings from your compiler and shorter compile times. You might also encounter incompatibilities or bugs; clang is a very young project.
    • LLVM-GCC: GCC's front-end with LLVM's back-end. LLVM's back-end is faster than GCC's.

    clang's (Objective-)C++ support is far from being complete so it calls llvm-gcc when it encounters a C++ source file. It also contains the static analyzer that is now integrated into Xcode. Some people say LLVM's back-end generates better code than GCC's but your mileage may vary. LLVM also supports link-time optimizations (which you can enable in Xcode's project settings). They may produce faster code.

    Apple wants to replace GCC with clang in the future because they have a policy against GPLv3 licensed code (GCC 4.2 is the last version that's licensed under GPLv2).

    0 讨论(0)
提交回复
热议问题