c 編譯器大全
看了下nginx的auto/cc下的目錄,nginx對多種c語言的編輯器都進行了支持。才知道c語言有那么多編輯器。
編譯器原理
所謂編譯器,就是執行下面的三步驟:
1 將目標語言轉換為AST抽象語法樹
2 優化抽象語法樹
3 將抽象語法樹轉化為適用於各個系統架構的指令集
各種編譯器
acc
HP aC++ compiler, 指的是HP C/aC++ 開發者工具包中包含的編譯器,特指HP C/ANSI C compiler編譯器。
它主要是在惠普服務器上運行的。 HP Integrity 和 HP 9000 服務器上運行的 HP-UX 操作系統上的編譯器。HP-UX 是基於System V,是Unix的一個變種。惠普服務器支持范圍從入門級商業應用到大規模服務器應用, 比如SAP軟件就有搭建在 HP-UX 操作系統之上的。
bcc
Borland C++ compiler,是MS-DOS 和 Microsoft Windows的編譯器。Turbo C/C++的進化版
ccc
Compaq C compiler, 如其名,康柏電腦公司的C編譯器,比如操作系統Tru64 UNIX就是使用這種編譯器。
clang
Clang C compiler,Clang的C語言編譯器。Clang是一個支持C,C++,OC,OC++四種C家族編程語言的編譯器。它的目標就是為蘋果提供提供基於LLVM的GNU編譯套裝(GCC)的替代品。我們現在的mac電腦就是使用這個編譯器。
最早之前蘋果的編譯器完全繼承UNIX,使用的是GNU編譯套件,后來,編譯后端(將生成的AST數優化,並且生成適用於各個系統架構的指令集合)。蘋果使用LLVM將編譯優化和編譯后端全部統一了。但是前端還是GCC,所以有一段時間是GCC+LLVM的組合。但是后來Clang創建之后,就是使用Clang+LLVM的組合了。現在Apple的所有語言都是基於這個組合了。
gcc
GNU C compiler。GNU就是最著名的Unix的編譯器了。最早的時候叫做GNU C編譯器,早於1984年,每一個類Unix操作系統都需要一個C編譯器來讓程序員可以用高級語言C來寫程序。當時沒有免費的編譯器,所以GNU項目從頭開發了一個編譯器。1987年GCC的第一個版本發布。1992年,增加了對C++語言的支持。而后,支持了更多的語言,所以GCC這個縮寫由原先的GNU C Compiler變化成為了GNU Compiler Collection。
icc
Intel C++ compiler。 如名,icc是Intel的編譯器團隊創建出來的。主要目標當然很明顯,就是為了在程序在Intel處理器下的優化。但是很多人反饋,icc在amd下的性能比較慢,而且bug很多。而且是收費的。
msvc
Microsoft Visual C++ compiler。 Microsoft Visual C++是微軟公司的C++開發工具,具有集成開發環境,可提供編輯C語言,C++以及C++/CLI等編程語言。VC++集成了便利的除錯工具,特別是集成了微軟Windows視窗操作系統應用程序接口(Windows API)、三維動畫DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C++ 2017。
owc
Open Watcom C compiler。這是一個加拿大公司Watcom出品的C/C++的編譯器,在DOS下能夠產生最佳的程序代碼。很多寫有些的廠商都使用Watcom C/C++來編譯程序。
后來Watcom C compiler也推出了Windows平台的C/C++開發工具。
稍后Watcom C/C++被Sybase並購,成為Sybase的Optima++的前身。
sunc
Sun C compiler。就是Sun公司創建的C編譯器。在Sun OS / Solaris上,Sun Pro / Sun Workshop / Sun Studio里的Sun C/C++/Fortran編譯器是主流。
參考文檔
http://yuxiaopeng.com/2016/08/compiler/
http://www.vienta.me/2014/06/11/你或許應該知道的LLVM/
https://cxd2014.gitbooks.io/an_introduction_to_gcc/content/1_jian_jie/11_gccde_li_shi.html
https://www.zhihu.com/question/21675828
https://www.zhihu.com/question/39661628