三类编译器
GCC,全称为GNU Compiler Collection,是一个强大的编译器集合,它不仅支持C和C++语言,还支持Fortran、Ada、Java等多种编程语言的编译。在GCC工具链中,gcc和g++是两个核心的编译器工具。gcc是专门用于编译C语言程序的编译器,而g++则是用于编译C++程序的编译器。尽管两者都可以处理C和C++文件,但它们在编译时的行为有所不同。gcc在编译.cpp文件时会按照C语言的规则进行,而不会链接C++的标准库,而g++则会按照C++的规则进行编译,并默认链接C++的标准库。因此,在实际开发中,通常推荐使用gcc来编译C程序,而使用g++来编译C++程序,以确保正确链接到相应的库并利用C++语言的特性。
MSVC,即Microsoft Visual C++,是微软提供的C/C++编译器,它是Visual Studio集成开发环境的一部分。MSVC主要针对Windows平台进行优化,提供了与Windows API和.NET框架紧密集成的优势,并且拥有丰富的调试工具和图形界面,适合Windows平台的开发者使用。
Clang,是一个由Apple公司开发的C语言家族编译器前端,属于LLVM项目的一部分。Clang以其模块化设计和优秀的静态代码分析能力而受到青睐,支持多种操作系统和处理器架构,并且是开源的,遵循BSD许可证,由LLVM社区维护和更新。
windows下的GCC—MinGW
MinGW,即Minimalist GNU for Windows,是一个为Windows操作系统提供的GNU工具集,它允许开发者在Windows平台上使用GCC编译器和其他GNU开发工具来编译和运行C和C++程序。MinGW提供了一个轻量级的运行时环境,包括必要的头文件、库和编译器前端,使得开发者可以在Windows上享受到类似于Unix/Linux的开发体验。简单的说,就是将GCC移植到了windows下。
MinGW可以通过MSYS2安装,也可以通过WinLibs - 适用于 Windows 的 GCC+MinGW-w64 编译器 --- WinLibs - GCC+MinGW-w64 compiler for Windows下载压缩包安装
或者通过发行版 · niXman/mingw-builds-binaries下载压缩包来安装。
这里有多个版本:
其中:
- x86_64开头的适用于64位机器
- posix和win32和mcf指的是线程模型,一个明显的区别是线程的API不同,使用posix的可移植性应该会更好,因为接口跟在linux下的接口一样,并且支持C++11的std::thread。
- MSVCRT(Microsoft Visual C++ Runtime)默认在所有Windows 版本上都可用,但由于向后兼容性问题,它停留在过去,不兼容 C99,并且缺少一些功能。从 Windows 10 开始,UCRT (Universal C Runtime) 可作为 MSVCRT 的替代品,它是为了更好地支持最新的Windows版本并提供更好的标准一致性而设计的,除非你以旧版本的 Windows 为目标,否则作为运行时库的 UCRT 是更好的选择。
综上,一般选择posix接口,ucrt运行时进行下载。下载解压后,将bin路径添加到path中即可。