编译器介绍
在Windows系统下的C/C++开发通常是以VS(Visual Studio)为主的,在Linux上则是GCC占据主导地位,这两种编译器是和其对应的操做系统紧密联系在一块儿的。伴随着计算机技术的发展,也出现了GCC的Windows移植版。虽然Microsoft的CL编译工具仍然只支持Windows,但其推出的Visual Studio Code做为一款跨平台的代码编辑器也收获了很多好评,可在GitHub上查看其版本历史。php
查阅网上资料,目前Windows系统下的编译器大概有如下几种:html
- Visual Studio, 微软自家开发,最新版VS 2017。通常商业公司会采用这种集成化的开发环境(IDE),配合丰富的插件扩展(如Visual Assist),开发调试起来很是方便,我的开发者可无偿使用其社区版,也不失为一个不错的选择。
- GCC,GNU C/C++ Compiler,功能强大而开源,推荐使用。
- 其余编译器。在对运行性能有很高要求的领域,可能上述编译器并不合适,所以还有Intel的编译器,PGI编译器等,功能强大但支持平台有限。另外还有一些小众的编译器,固然其中不乏著名的Borland公司的Turbo C,Turbo C++等没落的王者。。。
Windows下的GCC
通常咱们不会只使用gcc一个工具,而是但愿使用和它相关的一套工具,例如g++, gdb等,称为工具链(toolchain)。在Windows下包含GCC移植版本的主要有 MinGW 和 Cygwin 两个流派。git
- Cygwin - 其实并非一个GCC。她是让Windows拥有Unix-like环境的软件,因此,GCC天然也就会包含在里面(注意这里面的GCC和Linux下的GCC是同样的)。不过,对于开发者,Cygwin是一个开发环境。而对于用户来讲Cygwin是一个运行环境。使用Cygwin能够在Windows下调用Unix-like的系统函数,好比进程函数。
- MinGW - Minimalist GNU for Windows,可看做Windows应用的极简开发环境,提供的开源工具集不依赖于第三方DLL(但会依赖于微软官方库),主要包含GNU GCC编译器的移植版,MSYS以及其余工具。其中的MSYS是一个Bash Shell,可用来代替cmd.exe与MinGW工具一块使用。MinGW支持几乎全部Win32API,确实像是VS的一个替代品。能够从MinGW的官网找到其初始安装包,在安装时选择须要的工具下载安装。
- MinGW-w64 - 是MinGW的加强版,开始于2007年。原来的MinGW只能开发32位windows程序,而这个能够开发32位和64位程序,并加入了一系列加强工具。
- TDM-GCC - 可用来替代MinGW,它使用最新的GCC稳定版工具集,而且容纳了 MinGW 和 MinGW-w64,可以建立32位和64位程序。简单的说就是,TDM-GCC是包含GCC编译器,MinGW运行时API等不少开源工具的发行套装,只须要下载一个安装文件便可。
- MSYS2 - 其中的MSYS表示Minimal SYStem,不过它独立于MSYS开发,基于Cygwin和MinGW-w64,提供了一个bash shell,版本控制(git),MinGW-w64编译环境,以及众多的Unix/Linux环境下的工具。
GCC编译简介
GCC编译过程能够分为四个阶段:预处理,编译,汇编,连接。有时咱们不太关心汇编代码,而将只编译和汇编阶段统称为编译。下图展现了源文件hello.c
到可执行程序hello.exe
的完整编译过程:github

参考连接:shell