Windows環境下的C/C++編譯器

編譯器介紹

在Windows系統下的C/C++開發通常是以VS(Visual Studio)爲主的,在Linux上則是GCC佔據主導地位,這兩種編譯器是和其對應的操做系統緊密聯繫在一塊兒的。伴隨着計算機技術的發展,也出現了GCC的Windows移植版。雖然Microsoft的CL編譯工具仍然只支持Windows,但其推出的Visual Studio Code做爲一款跨平臺的代碼編輯器也收穫了很多好評,可在GitHub上查看其版本歷史php

查閱網上資料,目前Windows系統下的編譯器大概有如下幾種:html

  1. Visual Studio, 微軟自家開發,最新版VS 2017。通常商業公司會採用這種集成化的開發環境(IDE),配合豐富的插件擴展(如Visual Assist),開發調試起來很是方便,我的開發者可無償使用其社區版,也不失爲一個不錯的選擇。
  2. GCC,GNU C/C++ Compiler,功能強大而開源,推薦使用
  3. 其餘編譯器。在對運行性能有很高要求的領域,可能上述編譯器並不合適,所以還有Intel的編譯器,PGI編譯器等,功能強大但支持平臺有限。另外還有一些小衆的編譯器,固然其中不乏著名的Borland公司的Turbo C,Turbo C++等沒落的王者。。。

Windows下的GCC

通常咱們不會只使用gcc一個工具,而是但願使用和它相關的一套工具,例如g++, gdb等,稱爲工具鏈(toolchain)。在Windows下包含GCC移植版本的主要有 MinGW 和 Cygwin 兩個流派。git

  1. Cygwin - 其實並非一個GCC。她是讓Windows擁有Unix-like環境的軟件,因此,GCC天然也就會包含在裏面(注意這裏面的GCC和Linux下的GCC是同樣的)。不過,對於開發者,Cygwin是一個開發環境。而對於用戶來講Cygwin是一個運行環境。使用Cygwin能夠在Windows下調用Unix-like的系統函數,好比進程函數。
  2. MinGW - Minimalist GNU for Windows,可看做Windows應用的極簡開發環境,提供的開源工具集不依賴於第三方DLL(但會依賴於微軟官方庫),主要包含GNU GCC編譯器的移植版,MSYS以及其餘工具。其中的MSYS是一個Bash Shell,可用來代替cmd.exe與MinGW工具一塊使用。MinGW支持幾乎全部Win32API,確實像是VS的一個替代品。能夠從MinGW的官網找到其初始安裝包,在安裝時選擇須要的工具下載安裝。
  3. MinGW-w64 - 是MinGW的加強版,開始於2007年。原來的MinGW只能開發32位windows程序,而這個能夠開發32位和64位程序,並加入了一系列加強工具。
  4. TDM-GCC - 可用來替代MinGW,它使用最新的GCC穩定版工具集,而且容納了 MinGW 和 MinGW-w64,可以建立32位和64位程序。簡單的說就是,TDM-GCC是包含GCC編譯器,MinGW運行時API等不少開源工具的發行套裝,只須要下載一個安裝文件便可。
  5. MSYS2 - 其中的MSYS表示Minimal SYStem,不過它獨立於MSYS開發,基於Cygwin和MinGW-w64,提供了一個bash shell,版本控制(git),MinGW-w64編譯環境,以及衆多的Unix/Linux環境下的工具。

GCC編譯簡介

GCC編譯過程能夠分爲四個階段:預處理,編譯,彙編,連接。有時咱們不太關心彙編代碼,而將只編譯和彙編階段統稱爲編譯。下圖展現了源文件hello.c到可執行程序hello.exe的完整編譯過程:github

GCC編譯過程

參考連接:shell