编译器介绍
在Windows系统下的C/C++开发一般是以VS(Visual Studio)为主的,在Linux上则是GCC占据主导地位,这两种编译器是和其对应的操作系统紧密联系在一起的。伴随着计算机技术的发展,也出现了GCC的Windows移植版。虽然Microsoft的CL编译工具仍然只支持Windows,但其推出的Visual Studio Code作为一款跨平台的代码编辑器也收获了不少好评,可在GitHub上查看其版本历史。
查阅网上资料,目前Windows系统下的编译器大概有以下几种:
- 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 两个流派。
- 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
的完整编译过程:
参考链接:
来源:oschina
链接:https://my.oschina.net/u/729092/blog/544340