1. 程式人生 > >C/C++編譯器(編譯器而非IDE)

C/C++編譯器(編譯器而非IDE)

C/C++開發者必不可少的15款編譯器+IDE

C/C++聖戰

大家說的都已經很多了,那麼我在這裡就不羅嗦口了,我著重講下編譯器。

GCC(GNU Compiler Collection)

GCC有Windows移植版本,比較出名的就是MinGW和TDM-GCC

GNU編譯器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go語言的前端,也包括了這些語言的庫(如libstdc++、libgcj等等)。GCC的初衷是為GNU作業系統專門編寫的一款編譯器。GNU系統是徹底的自由軟體。此處,“自由”的含義是它尊重使用者的自由。

llvm+Clang

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 的靜態程式碼分析工具。

Watcom C/C++

在DOS開發環境中,Watcom C/C++ 編譯器 以編譯後的exe執行高速而著稱,且首個支援Intel 80386 "保護模式"的編譯器。於90年代中期,大批的雄心技術遊戲(例如 Doom、Descent、Duke Nukem 3D 都以 Watcom C 寫成)

Watcom C/C++ 編譯器、Watch Fortran 編譯器 經已在不其先前所屬公司Sybase售賣, 而被 SciTech 軟體公司 作為 Open Watcom 開源包 發行。類似於其他的 開源編譯器(例如 [GCC])專案,Watcom C程式碼小而便攜, 其編譯器後端(程式碼生成器)的目標碼可變。該編譯器可在DOS、OS/2、Windows等作業系統上執行,並生成各種可執行的(不必是該作業系統的)程式碼。該編譯器支援Novell NetWare的 NLM 目標碼。目前正進行 為 Linux[1] 、modern BSD (例如FreeBSD) 作業系統 重定目標碼, 以便在 x86、PowerPC 及 其它處理器上執行。Open Watcom C/C++ 的1.4版於2005年12月發行,採用 linux x86 為實驗目標, 支援NT、OS/2等host平臺. 曾有某被棄置的QNX版本,但其編譯所須的庫並未開源發行。當前最近的穩定版是1.9版,在2010年6月發行

Digital Mars

DigitalMars是一款高效能的編譯器,功能包含,快速編譯/連結時、強大的優化技術、Contract設計、完整的資源庫、瀏覽HTML文件,反彙編、庫、資源編譯器等。命令列及GUI版本、教程、程式碼示例、線上更新、標準模板庫等等。

MSVC系列

與Visual Studio整合釋出,微軟自己的編譯器,VS是一個基本完整的開發工具集,它包括了整個軟體生命週期中所需要的大部分工具,如UML工具、程式碼管控工具、整合開發環境(IDE)等等。所寫的目的碼適用於微軟支援的所有平臺,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。

Borland系列(turbo c和Borland C++)
Borland C++ Builder Compiler 是一個 BC編譯器。它是用來優化 BC 開發系統的工具。它包括最後版本的 ANSI/ISO C++ 語言的支援,包括 RTL,C++ 的 STL框架結構支援。Turbo C(TC)是其早期的命令列編譯器作品
Intel C++
Intel C++ Compiler (簡稱 icc 或 icl)是美國 Intel 公司開發的 C/C++編譯器,適用於 Linux、Microsoft Windows 和 Mac OS X 作業系統。
Intel 編譯支援 IA-32、Intel 64、Itanium 2、Intel Atom 處理器和某些非 Intel 的相容處理器(例如某些 AMD 處理器)。開發人員應當檢查系統需求。適用於 IA-32 和 Intel 64 的 Intel C++ 編譯器的主要特點是自動向量化器,它能夠生成 SSE、SSE2 和 SSE3 的 SIMD 指令及其適用於 Intel 無線 MMX 和 MMX 2 的嵌入式變種。
Intel C++ Compiler 進一步支援 OpenMP 3.0 和適用於對稱多處理的自動並行化。藉助於 Cluster OpenMP 的附加能力,編譯器還可為分佈儲存多處理根據 OpenMP 指示自動生成訊息傳遞介面呼叫。
Intel C++ Compiler 可通過四種方式獲得,它分別是 Intel Parallel Studio、Intel C++ Compiler 專業版、Intel 編譯器套裝和 Intel Cluster Toolkit 編譯器版的一部分。該編譯器的最新發布是 Intel C++ Compiler 14.0 版本
TCC(Tiny C Compiler)
官方網站:http://bellard.org/tcc/
Tiny C Compiler(縮寫為TCC, tCc或TinyCC)用於x86(16/32位)或是x86-64(64位)系統的C compiler,而開發者為Fabrice Bellard。軟體是設計用於低階電腦環境,或是於磁碟容量有限的空間中(1.44磁片或是硬碟)。軟體可以適用於Windows、Linux、Unix作業系統,而最新版本為0.9.26(Feb 15, 2013)。TCC是在GNU寬通用公共許可證(LGPL)協議規範下發布。作者是大神法布里斯·貝拉(FabriceBellard)
TCC符合ANSI C(C89/C90)規範,Tiny C Compiler Reference Documentation accessed on 2008-08-07]亦符合新版的ISO C99標準規範,與GNU C擴充套件的內嵌組合語言(即inline assembler,內聯彙編大陸用語)功能組合語言。
而Google Andriod系統內亦曾經內置於其中,於Andriod 2.0版本中

其他一些沒有詳細解釋的編譯器
VectorC1.3.3,IBMVisualAgeforC++,KAIC/C++4.03fforRedHat7.2,Lcc4.1,LCC-WIN32,SmallC,CC386,PacificC
另外還有C的直譯器Quincy,Eic,CINT
Intel C/C++大家一看名稱就知道是Intel的東西,它和VC6完全相容,不過要掛在VC6下才能用。Watcom C/C++是早先編譯器四國大戰中的一員,原本是很不錯的東西,可惜戰略不對,現在已不見聲息了。倒是以它為基礎的一個OpenWatcom現在還在奮戰。VectorC是我近日才發現的一個好東東,它是個純C的編譯器。IBM的VisualAge for C++原本是IBM想用來淌C++編譯器這片渾水的東西,不過IBM的戰略改了,它就被放棄了。DigitalMars C/C++的前身的Symantec C++(它也是編譯器四國大戰中的一員),不過現在Symantec不做了,於是它的作者就把它改成了DigitalMars C/C++開放給大家使用。以上這些都是WIN32平臺上的東西。KAI C/C++是個很強大的C/C++編譯器,它是個多平臺的編譯器。不過現在被INTEL收購了,已經停止開發了。Lcc4.1是個純C的編譯器它是開放原始碼的。不過不怎麼好用。LCC-WIN32是一個在LCC基礎上開發的C語言的整合開發環境,很好用,而且有很詳細的資料,FREE!Pacific C是一個純DOS的C的整合開發環境,就不多說了。Small C CC386都是開放原始碼的編譯器,它們都很簡單,應用來給大家學習編譯器的。