The version of compiler you’re running will affect all the software you compile.
Unfortunately, the default changes on the Mac. It depends on:
- the version of OS X you’re running
- whether you installed Xcode (and/or the Command Line Tools) and, if so,
- what version of Xcode you have installed
So, how does it affect the software?
For starters, you’ll find some just doesn’t compile. E.g. take a look at some of the problems installing Ruby under Lion:
So, here’s a small guide.
Compilers have a front-end, that contains the parser and semantic analysis for the programming language and generates an intermediate representation of your code, and a backend which takes the stuff the front-end produced, optimizes it, and generates assembly code.
- GCC: contains both front-ends for various languages and back-ends for many processor architectures
- LLVM: a set of back-ends for various architectures
- clang: a new front-end for C, Objective-C, and C++, uses the LLVM back-ends This generates more readable errors and warnings and shorter compile times. There may also be incompatibilities or bugs as clang is still very young
- LLVM-GCC: is a GCC front-end with an LLVM back-end. LLVM’s back-end is faster than GCCs
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).
Try it out:
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5659)
means you’re running gcc.