Loading... ## 1、GCC(GNU Compiler Collection) 通常所说的GCC是`GNU CompilerCollection`的简称,除了编译程序之外,它还含其他相关工具。GCC是Linux平台下最常用的编译程序。同时,在Linux平台下的嵌入式开发领域,GCC也是用得最普遍的一种编译器。GCC之所以被广泛采用,是因为它能支持各种不同的目标体系结构。例如,它既支持基于宿主的开发(简单讲就是要为某平台编译程序,就在该平台上编译),也支持交叉编译(即在A平台上编译的程序是供平台B使用的)。目前,GCC支持的体系结构有四十余种,常见的有X86系列、Arm、 PowerPC等。同时,GCC还能运行在不同的操作系统上,如Linux、Solaris、Windows等。 除了上面讲的之外,GCC除了支持C语言外,还支持多种其他语言,例如C++、Ada、Java、`Objective-C`、FORTRAN、Pascal等。 ## 2、Clang clang是LLVM编译器工具集的一个用于编译C、C++、Objective-C的前端。LLVM项目的目标是提供一个GNU编译器套装(gcc)的替代品,由苹果公司的赞助开发,其源代码授权采用的是类BSD的伊利诺伊大学厄巴纳-香槟分校开源码许可。 相比于GCC,Clang有如下优点: - 编译速度更快:在某些平台上,clang的编译速度要明显快于gcc。 - 占用内存更小:clang生成的AST所占用的内存通常是gcc的五分之一左右。 - 模块化的设计:clang采用基于库的模块化设计,更易于IDE的集成及其他用途的重用。 - 诊断信息可读性强:在编译过程中,clang会创建并保留大量详细的元数据 (metadata),这将更有利于调试和错误报告。 - 设计更清晰简单,容易理解,易于扩展加强。与代码基础较为古老的gcc相比,学习曲线会显得更为平缓。 相比于gcc, clang在以下方面还需要加强: - 需要支持更多语言:gcc除了支持 C/C++/Objective-C, 还支持Fortran/Pascal/Java/Ada/Go等其他语言。clang 目前基本上只支持C/C++/Objective-C/Objective-C++这四种语言。 - 需要加强对C++的支持:clang对C++的支持依然落后于gcc,clang 还需要加强对C++ 提供全方位支持。 - 需要支持更多平台:由于gcc流行的时间比较长,已经被广泛使用,对各种平台的支持也很完备。clang目前支持的平台有 Linux/Windows/Mac OS。 ## 3、MSVC(Visual C++) 与Linux系列操作系统不同,Windows原生环境不提供类似**gcc**,**Clang**的C/C++语言源程序编译运行工具链。运行在Windows上的IDE(集成开发环境),比如CodeBlocks之类,一般都使用MinGW配置模拟Linux下的开发环境来进行Windows下的开发. 但是在Windows下,与开发环境以及code编辑器协同更好的还是**MSVC**(Microsoft Visual C/C++)编译器。对于灵活程度更高的code编辑器,我们可以将Microsoft的Visual C/C++编译器下载并集成到code中。 MSVC编译器工具链主要由**cl.exe**与**link.exe**构成。其中: 1. **cl.exe**用于控制在 Microsoft C/C++的编译器和链接器 2. **link.exe** 将通用对象文件格式 (COFF) 对象文件和库链接起来,以创建可执行 (.exe) 文件或动态链接库 (DLL) 3. 用户只需要调用cl.exe,即可完成编译-链接全过程。 4. Microsoft官方介绍:[**cl.exe**的命令行语法](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fdocs.microsoft.com%2Fzh-cn%2Fcpp%2Fbuild%2Freference%2Fcompiler-command-line-syntax%3Fview%3Dvs-2019) ## 4、参考资料 [1] [GCC简介](https://itopic.org/gcc.html#:~:text=%E9%80%9A%E5%B8%B8%E6%89%80%E8%AF%B4%E7%9A%84GCC,%E7%BC%96%E8%AF%91%E5%99%A8%E7%9A%84%E4%BA%8B%E5%AE%9E%E6%A0%87%E5%87%86%E3%80%82) [2] [clang编译器简介](http://owlman.github.io/my_post/%E6%8A%80%E6%9C%AF/clang%E7%BC%96%E8%AF%91%E5%99%A8%E7%AE%80%E4%BB%8B.html) [3] [(Windows10) VS-code 的MSVC编译环境搭建](https://my.oschina.net/u/4403337/blog/4551385) [4] [《C语言编程魔法书:基于C11标准》——1.3 主流C语言编译器介绍](https://developer.aliyun.com/article/109375) [5] [Windows下的Qt编译器——MinGW和MSVC的区别](https://www.cnblogs.com/tzbubble/p/12908007.html) Last modification:February 13th, 2021 at 06:51 pm © 允许规范转载