- 相關(guān)推薦
C語(yǔ)言編譯器和IDE的選擇之間的關(guān)系
語(yǔ)言代碼由固定的詞匯按照固定的格式組織起來(lái),簡(jiǎn)單直觀,程序員容易識(shí)別和理解,但是對(duì)于CPU,C語(yǔ)言代碼就是天書,根本不認(rèn)識(shí),CPU只認(rèn)識(shí)幾百個(gè)二進(jìn)制形式的指令。以下是小編整理的C語(yǔ)言編譯器和IDE的選擇之間的關(guān)系,歡迎學(xué)習(xí)!
什么是編譯器
C語(yǔ)言代碼由固定的詞匯按照固定的格式組織起來(lái),簡(jiǎn)單直觀,程序員容易識(shí)別和理解,但是對(duì)于CPU,C語(yǔ)言代碼就是天書,根本不認(rèn)識(shí),CPU只認(rèn)識(shí)幾百個(gè)二進(jìn)制形式的指令。這就需要一個(gè)工具,將C語(yǔ)言代碼轉(zhuǎn)換成CPU能夠識(shí)別的二進(jìn)制指令,也就是將代碼加工成 .exe 程序;這個(gè)工具是一個(gè)特殊的軟件,叫做編譯器(Compiler)。
編譯器能夠識(shí)別代碼中的詞匯、句子以及各種特定的格式,并將他們轉(zhuǎn)換成計(jì)算機(jī)能夠識(shí)別的二進(jìn)制形式,這個(gè)過(guò)程稱為編譯(Compile)。
C語(yǔ)言的編譯器有很多種,Windows 下常用的是微軟開(kāi)發(fā)的 cl.exe,Linux 下常用的是GUN組織開(kāi)發(fā)的 GCC。
你的代碼語(yǔ)法正確與否,編譯器說(shuō)了才算,我們學(xué)習(xí)C語(yǔ)言,從某種意義上說(shuō)就是學(xué)習(xí)如何使用編譯器,讓編譯器生成 .exe 程序。
編譯器可以100%保證你的代碼從語(yǔ)法上講是正確的,因?yàn)槟呐掠幸稽c(diǎn)小小的錯(cuò)誤,編譯也不能通過(guò),編譯器會(huì)告訴你哪里錯(cuò)了,便于你的更改。
選擇合適的IDE
實(shí)際開(kāi)發(fā)中,除了編譯器等必須的工具,我們往往還需要很多其他輔助軟件,例如編輯器、調(diào)試器、文件管理等,這些工具通常被打包在一起,統(tǒng)一發(fā)布和安裝,例如 Visual C++ 6.0、Visual Studio、Dev C++、Code::Blocks、C-Free 等,它們統(tǒng)稱為IDE(Integrated Development Environment,集成開(kāi)發(fā)環(huán)境)。
在 Linux 下使用GCC(GNU Compiler Collection,GNU編譯器套件)。GCC是GUN組織開(kāi)發(fā)的自由軟件,除了支持C,還支持C++、Java、Objective-C等,它是Linux平臺(tái)編譯器的事實(shí)標(biāo)準(zhǔn)。
在 Mac OS X 下使用 Xcode。Xcode 是由Apple官方開(kāi)發(fā)的IDE,支持C、C++、Objective-C、Java等,可以用來(lái)開(kāi)發(fā)OS X和iOS上的應(yīng)用程序。Xcode最初使用GCC作為編譯器,后來(lái)由于GCC的不配合,改用LLVM。
在Windows下,IDE的選擇是很糾結(jié)的事情:
1) Visual C++ 6.0(簡(jiǎn)稱VC 6.0)是微軟開(kāi)發(fā)的一款經(jīng)典的IDE,很多高校都以 VC 6.0 為教學(xué)工具來(lái)講解C和C++。但VC 6.0是1998年的產(chǎn)品,很古老了,在Win7下有各種各樣的兼容性問(wèn)題,在Win8、Win10下根本不能運(yùn)行。
2) Visual Studio(簡(jiǎn)稱VS)是 Visual C++ 6.0 的升級(jí)版,增加了很多特性,支持了更多的語(yǔ)言,非常龐大,安裝包有2~3G,下載不便,而且會(huì)安裝很多暫時(shí)用不到的工具,安裝時(shí)間在半個(gè)小時(shí)左右。
另外,VS 安裝的組件眾多,不容易卸載干凈。如果你的計(jì)算機(jī)配置低,運(yùn)行Visual Studio還會(huì)吃力。
3) C-Free、Dev C++、Code::Blocks 默認(rèn)使用MinGW(GCC編譯器的Windows版本)或者Cygwin(Windows平臺(tái)上運(yùn)行的Linux模擬環(huán)境),不是真實(shí)的Windows開(kāi)發(fā)環(huán)境,但它們小巧、容易安裝和卸載。
在Windows下的大部分程序員都使用VS,不過(guò)考慮到初學(xué)者下載、安裝和運(yùn)行VS的成本,本教程約定:在Windows下使用C-Free來(lái)運(yùn)行C語(yǔ)言,必要時(shí)才講解VS或VC。
好在C語(yǔ)言的絕大部分內(nèi)容是通用的,不針對(duì)具體的編譯器,各位讀者也可以放心使用 Dev C++、Code::Blocks 等其他IDE,它們都是大同小異的,相信你肯定能觸類旁通。
C語(yǔ)言編譯器gcc命令如何操作步驟
C語(yǔ)言的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開(kāi)發(fā)上,而且各類科研都需要用到C語(yǔ)言,適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開(kāi)發(fā)。
Linux 系統(tǒng)中最重要的軟件開(kāi)發(fā)工具是 gcc,在 Linux 系統(tǒng)中,c89、cc 和 gcc 這些命令基本上都指向系統(tǒng)的C語(yǔ)言編譯器,通常是GNU C編譯器,或都簡(jiǎn)稱 gcc。在 UNIX 系統(tǒng)中,C 語(yǔ)言編譯器稱為 cc。實(shí)際上,gcc 能夠編譯三種語(yǔ)言:C、C++ 和 Object C(C 語(yǔ)言的一種面向?qū)ο髷U(kuò)展)。利用 gcc 命令可同時(shí)編譯并連接 C 和 C++ 源程序,一般來(lái)說(shuō),C 編譯器通過(guò)源文件的后綴名來(lái)判斷是 C 程序還是 C++ 程序。在 Linux 中,C 源文件的后綴名為 .c,而 C++ 源文件的后綴名為 .C 或 .cpp。對(duì)于 C++ 程序,gcc 命令只能編譯 C++ 源文件,而不能自動(dòng)和 C++ 程序使用的庫(kù)連接。因此,通常可以使用 g++ 命令來(lái)完成 C++ 程序的編譯和連接,該程序會(huì)自動(dòng)調(diào)用 gcc 實(shí)現(xiàn)編譯。本人一直都是在 Linux系統(tǒng)編譯 C程序的,就 gcc 命令行的作用記錄下來(lái)。
首先通過(guò)編寫、編譯和運(yùn)行一個(gè) HelloWorld 程序?qū)嵗_(kāi)始
一、源代碼
/* hello.c */
#include
#include
int main(void)
{
printf("Hello World!");
return 0;
}
二、 編譯、鏈接和運(yùn)行程序
#gcc -o hello hello.c
#./hello
Hello World!
#
命令選項(xiàng)的作用:
1. -o Place the output into
如:#gcc -o file file.c
-o 告訴編譯器將可執(zhí)行程序放在何處,如果沒(méi)有指定文件名稱,編譯器則會(huì)把程序放在一個(gè)名為a.out的文件里(a.out的含義是 assembler output,即匯編輸出)。
2. -c Compile and assemble, but do not link
如:#gcc -c file.c
-c 告訴編譯器僅把源代碼編譯為目標(biāo)模塊(file.o)而跳過(guò)匯編和連接的步驟。在使用-c生成目標(biāo)模塊后,就可以通過(guò)-o選項(xiàng)來(lái)生成可執(zhí)行文件。如:#gcc -o file file1.o file2.o 可以是多個(gè)目標(biāo)模塊。
3. -l和-L
指示編譯器程序要鏈接的庫(kù)。其中-L要增加庫(kù)的搜索路徑。如:hello.so動(dòng)態(tài)庫(kù)放在/usr/cprimer目錄下,那就是 -L/user/cprimer
4. -O
如:#gcc file.c -O2,
用來(lái)優(yōu)化程序用的。優(yōu)化程序,執(zhí)行速度可能也有所提高,從未真正測(cè)試過(guò)。
5. -include
-include 告訴編譯器需要包含頭文件,但一般情況下包含頭文件都在源碼里用#include xxxxxx實(shí)現(xiàn),一般很少用這個(gè)選項(xiàng)。
【C語(yǔ)言編譯器和IDE的選擇之間的關(guān)系】相關(guān)文章:
C語(yǔ)言項(xiàng)目中.h文件和.c文件的關(guān)系詳解05-08
C言語(yǔ)KEIL的ARM編譯器對(duì)RW和ZI段的處理07-30
C語(yǔ)言函數(shù)的遞歸和調(diào)用08-22
C語(yǔ)言選擇結(jié)構(gòu)知識(shí)點(diǎn)10-22
C語(yǔ)言中的BYTE和char字符08-06