1 程序编译流程
2 编译工具链
C/C++编译器汇总
- MSVC(MicroSoft Visual C++):微软专为Windows平台开发提供的编译器,通常与Visual Studio配合使用。
- 编译工具:cl
- 链接工具:link
- 标准库文件:msvcrt
- GCC(GNU Compiler Collection):Linux平台下的默认编译器,支持多种编程语言。
- 编译工具:gcc/g++
- 链接工具:ld
- 调试工具:gdb
- 标准库文件:glibc/libstdc++
- MinGW(Minimalist GNU for Windows):GNU在Windows平台上的实现,支持在Windows平台上使用GCC编译器。
- 编译工具:gcc/g++
- 链接工具:ld
- 标准库文件:glibc/libstdc++
- Clang + LLVM:跨平台编译器,可在Windows、Linux、MacOS、Android、iOS等多个平台使用,提供了与GCC类似的功能,其中Clang是编译器前端,主要负责源代码解析和中间代码的生成;LLVM是编译器后端,主要负责链接和机器码的生成。
- 编译工具:clang/clang++
- 链接工具:lld
- 调试工具:lldb
- 标准库文件:libc++
- ICC(Intel C++ Compiler):英特尔推出的C++编译套件,适用于Linux、Windows和MacOS操作系统。
- 编译工具:icc
常见构建工具
- Make:Make是一个老牌的自动化构建工具,用于编译和构建软件项目。通过Makefile文件定义项目的构建规则和依赖关系,Make根据这些规则来执行编译、链接等操作。
- Ninja:Ninja是一个专注于速度的构建系统,被设计用来替代make,Ninja通常与CMake配合使用,CMake可以生成Ninja构建文件以加速项目构建过程。
- CMake:CMake是一个跨平台的开源构建系统,它可以自动生成用于不同编译器和操作系统的Makefile或项目文件(CMake本身并不负责编译源代码,只是生成用于编译的文件)。CMakeLists.txt是CMake构建系统的核心文件,它定义了项目的构建规则和依赖关系。在执行cmake命令时,CMake会读取CMakeLists.txt文件,解析其中的内容,然后生成适合于特定构建系统的文件,比如Makefile文件或Visual Studio、XCode项目文件等。