#AskCpp06 C++编译器傻傻分不清楚?
编译器是什么?
编译器是一种将源代码编译成目标代码的程序。
这里的源代码通常指高级语言写的程序,目标代码为汇编语言或者机器码。
-
现代编译器系统的一般流程:
源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标代码(object code)→ 链接器(linker)→ 可执行文件(executables)
-
编译器的分类:
- 本地编译器(编译出与编译器所在系统平台相同的程序)
- 交叉编译器(编译出在不同平台上运行的程序)
C++ 编译器
C++ 编译器有很多,不同的编译器由于其源码不同,故其对 C++ 标准的支持不同,编译速度也有区别。
-
MSVC(Microsoft Visual C++,cl.exe)
微软的 VC(Visual C++) 编译器,同时支持现代 C++ 标准,一般集成在 VS 中。
-
GCC
GNU 编译器套装(英语: GNU Compiler Collection,缩写为 GCC ),指一套编程语言编译器,以 GPL 及 LGPL 许可证所发行的 自由软件,也是 GNU 计划的关键部分,也是 GNU 工具链的主要组成部分之一。GCC(特别是其中的 C 语言编译器)也常被认为是跨平台编译器的事实标准。
属于 GNU 项目,主要针对类 Unix 平台,通过 Cygwin 和 MinGW 提供对 Windows 的支持。
-
Clang
Clang(发音为 /ˈklæŋ/ 类似英文单字clang[1]) 是一个 C、C++、Objective-C 和 Objective-C++ 编程语言的 编译器前端。它采用了 LLVM 作为其后端,而且由 LLVM2.6 开始,一起发布新版本。它的目标是提供一个 GNU 编译器套装(GCC)的替代品,支持了 GNU 编译器大多数的编译设置以及非官方语言的扩展。
性能:测试证明 Clang 编译 Objective-C 代码时速度为 GCC 的 3 倍 [4],还能针对用户发生的编译错误准确地给出建议 [5]。
-
Intel C++ 编译器
Intel C++ 编译器可以为各种 Intel CPU(包括 Xeon,Core 和 Atom 处理器)生成高度优化的代码。
其他的不管
由编译器想到 C++ 生态,编译器、IDE、工具链,测试等等,这些概念其实还区分不清楚!