第一種:minGW-w64
一、什么是 MinGW-w64 ? MinGW 的全稱是:Minimalist GNU on Windows 。它實際上是將經典的開源 C語言 編譯器 GCC 移植到了 Windows 平台下,並且包含了 Win32API ,因此可以將源代碼編譯為可在 Windows 中運行的可執行程序。而且還可以使用一些 Windows 不具備的,Linux平台下的開發工具。一句話來概括:MinGW 就是 GCC 的 Windows 版本 。 以上是 MinGW 的介紹,MinGW-w64 與 MinGW 的區別在於 MinGW 只能編譯生成32位可執行程序,而 MinGW-w64 則可以編譯生成 64位 或 32位 可執行程序。 正因為如此,MinGW 現已被 MinGW-w64 所取代,且 MinGW 也早已停止了更新,內置的 GCC 停滯在了 4.8.1 版本,而 MinGW-w64 內置的 GCC 則更新到了 6.2.0 版本。 二、為什么使用 MinGW-w64 ? 1. MinGW-w64 是開源軟件,可以免費使用。 2. MinGW-w64 由一個活躍的開源社區在持續維護,因此不會過時。 3. MinGW-w64 支持最新的 C語言 標准。 4. MinGW-w64 使用 Windows 的C語言運行庫,因此編譯出的程序不需要第三方 DLL ,可以直接在 Windows 下運行。 5. 那些著名的開源 IDE 實際只是將 MinGW-w64 封裝了起來,使它擁有友好的圖形化界面,簡化了操作,但內部核心仍然是 MinGW-w64。 MinGW-w64 是穩定可靠的、持續更新的 C/C++ 編譯器,使用它可以免去很多麻煩,不用擔心跟不上時代,也不用擔心編譯器本身有bug,可以放心的去編寫程序。 三、MinGW-w64 適合做什么? 對於熟悉 MinGW-w64 的高手而言,它可以編譯任何 C語言 程序。但對於一般人來說,MinGW-w64 太過簡陋,連圖形用戶界面都沒有。這讓習慣使用鼠標的人,感到很痛苦。雖然也可以通過一些配置,讓 MinGW-w64 擁有圖形用戶界面,但那個過程非常麻煩。 除此之外,編譯復雜的程序時,還需要你會編寫 Makefile ,否則只能一個文件一個文件的編譯,可想而知會多么辛苦。 但對於初學 C語言 的人來說,MinGW-w64 是正合適的編譯器,至少黑色的命令提示符界面很有編程的氣氛,感覺很酷。 在剛開始學 C語言 時,所有代碼通常都寫在一個文件中,只要輸入幾個簡單的命令,就能用 MinGW-w64 編譯成可執行文件。雖然 VS2015 等編譯器,只要點擊下鼠標就可以完成編譯,但它會自動生成一大堆工程文件,讓初學者摸不着頭腦。而 MinGW-w64 則只會生成一個可執行文件。 如果對 MinGW-w64 和 VS2015 等編譯器進行一下形容,那么 MinGW-w64 是手動的,而 VS2015 等編譯器則是自動的。因此 MinGW-w64 的編譯過程更加直觀容易理解,也比較適合C語言學習。 總而言之,對於一般人來說,MinGW-w64 適合學習 C語言 時使用,真正工作還是用 VS2015 更好。當然如果您是在 Linux 下工作,那么Code::Blocks可能是一個選擇,不過最大的可能是您必須習慣使用 GCC 來編譯程序。
第二種:GCC
GNU Compiler Collection(GCC) GNU編譯器集合(GCC)是用於編程的編譯器集合,如c++、C、Objective-C、Java和Fortran。GCC版本是通過一個通過命令行操作的自由軟件基礎來實現的。GCC開發是由Richard Stallman作為GNU項目的一部分進行的。 對於每一種編程語言,GCC 包含其獨立的程序。在GCC中,所有語言都有一個共同的內部結構,該結構由一個特定於語言的前端組成,該前端解析程序並生成一個抽象語法樹和后端。 GCC也包含了ANSI C編譯器里的所有特性。這個編譯器允許多個級別的源代碼錯誤檢查,這些檢查通常由其他工具提供。它還對結果對象代碼和調試信息執行許多類型的優化。 GCC是許多操作系統的主要編譯器。由於GCC是自由可獲得的軟件,因此許多的軟件也是基於GCC。上述的這類軟件主要包括用C創建並通過GCC編譯的軟件。 在眾多的國家中,GCC由一個多樣化的團體來維護,而變化則由一個委員會來管理。這一原則為大家提供了優秀的編譯器,可以在某些體系結構和各種環境下工作。GCC還增加了更多的語言、優化、目標,並提高了調試周期的速度。 GCC有各種各樣的體系結構指令集,廣泛用作開發自由軟件和專有軟件的工具。它也可用於嵌入式系統,並適用於各種平台。 GCC有許多拓展GCC編譯器的插件。通過插件,開發人員可以在Gimple表示層上添加、替換或刪除中間端傳遞操作系統。GCC的Python插件從編譯器內部調用任意的Python腳本。MELT插件允許高級Lisp語言擴展GCC。 對於C語言的編譯,GCC編譯器使用以下命令: gcc program.c -o targetFile 這里program.c是C源文件名,其中 targetFile 是執行的目標文件 (二進制文件)。
第三種:G++
GNU C++ Compiler(G++) GNU提供了C++的優化編譯器,也就是眾所周知的G++。它可以在各種處理器上運行,大家可以在Emacs下找到完整的文檔。與GCC一樣,G++包含獨立的程序。通過這個編譯器,所有的語言都使用通用的內部結構,該結構由特定於語言的前端組成,前端解析程序並創建抽象語法樹和后端。 G++主要用於編譯C++編程語言。它是不同操作系統(如Linux、BSD和MAC OS x)中的主編譯器。它是免費提供的軟件,支持許多用c++編程語言創建並使用g++編譯的自由軟件。 如果您想編譯C++文件,那么您將需要使用包含C++代碼的文件名的G++編譯器。如果您的文件不包含任何錯誤,那么它將成為可執行文件。 g++是強大的編譯器,為您提供了許多可能的選項。G++瀏覽文檔部分,並從命令提示符中查看您的g++版本附帶的文檔 GCC和g++之間的主要區別是文件名擴展名。gcc將. C文件視為C文件,而g++同時將. C和cpp文件視為c++文件 在編譯階段,G++調用GCC,因此G++是完整的編譯器,而不是任何其他編譯器的預處理器。這個編譯器從源代碼構建目標代碼,它不生成程序的任何中間C版本。g++是一個完整的編譯器,具有不同的前端,並調用相同的后端。 在編譯c++程序時,GCC在默認情況下是不鏈接的,假設您需要使用-Istdc ++命令進行鏈接。默認情況下,g++會自動鏈接到c++庫。 為了編譯c++程序,g++使用以下命令 g++ program.cpp –o targetFile 這里program.cpp是c++源文件名,targetFile 是執行的目標文件。
第四種:llvm+Clang
LLVM官方網站:http://llvm.org/ Clang官方網站:http://clang.llvm.org/get_started.html LLVM是構架編譯器(compiler)的框架系統,以C++編寫而成,用於優化以任意程序語言編寫的程序的編譯時間(compile-time)、鏈接時間(link-time)、運行時間(run-time)以及空閑時間(idle-time),對開發者保持開放,並兼容已有腳本。LLVM計划啟動於2000年,最初由University of Illinois at Urbana-Champaign的Chris Lattner主持開展。2006年Chris Lattner加盟Apple Inc.並致力於LLVM在Apple開發體系中的應用。Apple也是LLVM計划的主要資助者. Low Level Virtual Machine (LLVM) 是一個開源的編譯器架構,它已經被成功應用到多個應用領域。Clang ( 發音為 /klæŋ/) 是 LLVM 的一個編譯器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等編程語言。Clang 對源程序進行詞法分析和語義分析,並將分析結果轉換為 Abstract Syntax Tree ( 抽象語法樹 ) ,最后使用 LLVM 作為后端代碼的生成器。 Clang 的開發目標是提供一個可以替代 GCC 的前端編譯器。與 GCC 相比,Clang 是一個重新設計的編譯器前端,具有一系列優點,例如模塊化,代碼簡單易懂,占用內存小以及容易擴展和重用等。由於 Clang 在設計上的優異性,使得 Clang 非常適合用於設計源代碼級別的分析和轉化工具。Clang 也已經被應用到一些重要的開發領域,如 Static Analysis 是一個基於 Clang 的靜態代碼分析工具。
第五種:MSVC系列
與Visual Studio集成發布,微軟自己的編譯器,VS是一個基本完整的開發工具集,它包括了整個軟件生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發環境(IDE)等等。所寫的目標代碼適用於微軟支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。 作者:zlrs 鏈接:https://www.jianshu.com/p/9345dfc35759 來源:簡書 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。