(gcc/g++)/clang/cl编译器

IDE: 现在的IDE把编译器集成进来了,包括代码编辑器+编译器。

GNU:GNU's NOT UNIX,鄙视UNIX不开源)

GCC----GNU Compiler Collection

即GUN编译器集合,包括gcc和g++编译器,它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。

gcc是GCC中的GUN C Compiler(C 编译器)
g++是GCC中的GUN C++ Compiler(C++编译器)

是GNU项目的关键部分,亦是自由的类Unix及苹果电脑Mac OS X 操作系统的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。

gcc调用了C compiler,而g++调用了C++ compiler

gcc和g++的主要区别

  1. 对于 .c和.cpp文件,gcc分别当做c和cpp文件编译(c和cpp的语法强度是不一样的)

  2. 对于 .c和.cpp文件,g++则统一当做cpp文件编译

  3. 使用g++编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL

Clang

一个C、C++、Objective-C和Objective-C++编程语言的编译器前端。包括Clang前端和Clang静态分析器等。[3]
它采用了底层虚拟机(LLVM)作为其后端,目标是提供一个GNU编译器套装(GCC)的替代品。苹果公司的赞助支持下进行开发,而源代码授权是使用类BSD的伊利诺伊大学厄巴纳-香槟分校开源码许可。
兼容GCC,也是跨平台。

cl.exe

cl.exe是Microsoft C/C++编译器(因此也叫VC++ 编译器),只能在支持Microsoft Visual Studio 的操作系统中运行

还记得在VS安装后会给项目配置lib,include,dll库的目录。那么系统如何去根据目录去找这些文件?
需要将这些文件路径放到系统的path变量里-----系统默认查找的范围。所以报错"cl.exe没找到",大概率就是这里path没设置好!!!(因为装了VS就自带了cl.exe编译器)

总结

Linux系统及跨平台用GNU
windows用cl,编译内存占用小。

另外,还有GCC在windows平台的移植版本,Ming-W64和 Cygwin。其中MingW-64是真正的GCC移植,而cygwin只是提供一个类unix的环境内部是原生的GCC。

原文地址:https://www.cnblogs.com/Henry-ZHAO/p/13649105.html