GNU、Clang/LLVM到底是些什么东西
说实话查了一些资料还不是很清楚,大概给出一个简单的理解。
GNU Compiler Collection(GCC)是GNU推出的一套开源编译工具链。包括了make,sed,Emacs,glibc,gdb和gcc等工具,和Linux内核共同构成一套系统。支持C、C++、Obj-C、Fortran、Ada、Go等语言。
Clang/LLVM是一套编译工具链,受到Apple的支持。包括中间语言LLVMIR,调试器,LLVMC++标准库,静态分析工具等。近年来包括Swift、Rust等都在使用LLVM作为编译框架。Clang是Apple开发用来取代GCC的前端编译器,与LLVM兼容性更好。
Visual C++是微软的一套编译工具链,在Linux平台的支持比较差。
MinGW(Minimalist GNU for Windows)是一个工具集,在Windows上提供了GNU下的多种工具,包括了GCC等。编译得到的结果运行在Windows系统之上。
Cygwin是位于Windows系统下的POSIX环境。在Windows上提供了Unix\Linux命令的执行支持环境。将Linux环境的程序迁移到Windows中,实际上通过dll文件在Windows系统中模拟了Linux的系统调用。
OpenMP是跨平台的并行API,更适用于一台多核机器上的并行处理。通过在代码中添加pragma omp的指令使得编译器自动生成并行执行的代码。
MPI(Message Passing Interface)是跨平台的并行API,适用于多个运算节点间的通信和并行处理。
OpenACC是一个计算加速API,支持CPU/GPU结构,可以提供科学计算等各种加速功能。通过在代码中添加pragma acc的指令使得运算得到加速。
参考资料: GCC和Clang/LLVM的比较