1. 引言
很多人做了很多年的C/C++開發,卻依然分不清C/C++編譯器的一些概念,今天就在這篇文章中好好的說一下,編譯器、編譯環境、編輯器、IDE(集成開發環境)這個幾個概念有交叉但差異很大,
- 編譯器:按照某種規范將C/C++代碼轉換成可執行程式的程式,
- 編譯環境:說白了就是作業系統,編譯器也是程式,需要運行在特定的作業系統上,
- 編輯器:撰寫代碼的程式,Linux常見的有Vim、VScode, Windows常見的有Visual Studio、Notepad++、UltraEditor、記事本等,
- IDE(集成開發環境):是指包括了專案檔案管理器、代碼編輯器、除錯器、編譯器等各種開發時候需要的工具集合,通常是打包一起安裝的,
2. 編譯器
C++編譯器有很多種,由于C/C++是作業系統底層開發工具,所以和作業系統普及和流行程度密切相關,目前最常見的有下面幾種:
2.1. MSVC
MSVC是Windows平臺上,Visual Studio自帶的C/C++編譯器和運行庫,只要安裝好Visual Studio,就可以直接用這個編譯器編譯了,
2.2. GCC/G++
gcc and g++分別是GNU的c & c++編譯器,主要用于LINUX平臺,
- ⒈預處理,生成.i的檔案[前處理器cpp],
- ⒉將預處理后的檔案轉換成匯編語言,生成檔案.s[編譯器egcs],
- ⒊由匯編變為目標代碼(機器代碼)生成.o的檔案[匯編器as],
- ⒋連接目標代碼,生成可執行程式[聯結器ld],
然而在在Windows下,其實我們也經常看到GCC/G++的編譯器,只不過由于名稱的關系,我們沒有認出來而已,GCC編譯器在Windows下比較流行的移植版主要有MinGW、Cygwin和Djgpp三個,三者各有特色,針對不同的應用場合,可以選擇不同的移植版來滿足需要,這3個的區別是:
- 1.MinGW這個系列的移植主要方向是讓GCC的Windows移植版能使用Win32API來編程
- 2.而Cygwin的目標則是能讓Unix-like下的程式代碼在Windows下直接被編譯
- 3.至于Djgpp則是想讓DOS下也能用上GCC
2.3. Clang
Clang是一個C語言、C++、Objective-C語言的輕量級編譯器,主要用于Mac OS X平臺的開發,它是一個由Apple公司主導、用C++實作的編譯器,它與GNUC語言規范幾乎完全兼容,并在此基礎上增加了額外的語法特性,目前Clang由于特性先進,也越來越流行,但是相對來說還是GCC 更流行,Clang不只用于Mac,在各個作業系統都有對應的編譯器,
2.4.其它編譯器
例如:
- ICC(Intel C/C++ Compiler)
- BCC(Borland C/C++ Compiler)
- RVCT(ARM的匯編/C/C++編譯器)
這些編譯器用的比較少,有的已經快消失了,
3. 代碼編輯器
3.1 Windows編輯器
Windows上 用得最多的是Visual Studio、QtCreator


另外還有一些文本編輯器也可以用來寫代碼,比如Notepad++和UEStudio:


3.2 Linux編輯器
Linux下比較推薦visual studio code和Qt Creator,另外也看到有人說:Code::Blocks、Netbeans等,這些我沒用過,就不細說了,有興趣的可以去玩一玩, 當然還有VIM,VIM需要配合其他工具一起使用,編輯單個代碼檔案是沒有問題的,但是它自身不具備專案工程管理的能力,
3.2.1 visual studio code
Visual Studio Code(簡稱“VS Code” )是Microsoft在2015年4月30日Build開發者大會上正式宣布一個運行于 Mac OS X、Windows和 Linux 之上的,針對于撰寫現代Web和云應用的跨平臺源代碼編輯器,可在桌面上運行,并且可用于Windows,macOS和Linux,它具有對JavaScript,TypeScript和Node.js的內置支持,并具有豐富的其他語言(例如C++,C#,Java,Python,PHP,Go)和運行時(例如.NET和Unity)擴展的生態系統,

3.2.2 vim
Vim是一個類似于Vi的著名的功能強大、高度可定制的文本編輯器,在Vi的基礎上改進和增加了很多特性,VIM是自由軟體,Vim普遍被推崇為類Vi編輯器中最好的一個.

4. IDE(集成開發環境)
前面其實已經說過了,這里就不展開了,概括一下就是Windows平臺一般用Visual studio,Qt Creator,Linux下一般用Visual Studio Code、Qt Creator、VIM,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394221.html
標籤:其他
下一篇:CobaltStrike基礎使用
