本文基于一个须要对 C 语言家族项目进行编译、生成解决方案的开发者的视角,对编译过程当中所须要的各个工具进行简要的名词解释。html
GCC | LLVM 提供编译器 <-- GNU Make 根据配置文件进行编译 <-- Autoconf | CMake 自动生成编译用的配置文件前端
注:上面提到的各种集合和工具所能作的事情并不单单局限于此。工具
GCC
和 LLVM
是咱们在编译 C 系项目时最常使用的两个工具链。
GCC
的全称是 GNU Compiler Collection , 即 GNU 编译器集合;
LLVM
的全称就是 LLVM (最开始的时候做为 Low Level Virtual Machine 的缩写,如今涵义已经发生了变化),如今是做为 LLVM 的编译器和工具链集合的一个总称。code
gcc
,全称 GNU C Compiler,是 GCC 中的 C 编译器;
g++
,全称 GNU C++ Compiler,是 GCC 中的 C++ 编译器。htm
Clang
是 LLVM 集合前端中的 C 系编译器和工具链。Clang 兼容 GCC ,Clang 出现的时间比 GCC 晚,相比 GCC , Clang 的编译速度更快,错误提示更友好。开发
当项目的源文件数量不少,结构十分复杂时,仅仅使用编译器对项目进行编译,会是一件十分繁琐的事情,引用头文件目录,引入源文件,引入第三方静态库动态库都会十分的繁琐。get
GNU Make
可以基于前面提供的编译器,选择项目中合适的源文件来生成项目所需的中间目标文件和可执行文件。开发者经过编写一个名为 makefile
的文件来指导 GNU Make
处理编译。编译器
Autoconf
是 m4
宏处理的扩展包,经过它能够生成一个脚本,这个脚本可以自动生成编译用的配置文件。Autoconf
和 Automake
是一对。io
CMake
是一个开源的软件,开发者经过编写独立于平台和编译器的配置文件,来指导项目的编译过程。编译
Autoconf 中涉及的概念比较多,生成脚本的步骤比较繁琐, CMake 在使用上更为简单。
LLVM
GCC,the GNU Compiler Collection
GNU Make
diff between gcc and g++
Programming Languages Supported by GCC
Clang
CMake
Autoconf