Eclipse(http://www.eclipse.org/)
Eclipse是一個(gè)由IBM公司牽頭開發(fā)的一個(gè)自由軟件,后來(lái)IBM公司為了讓更多的公司積極參與進(jìn)來(lái)而不至于讓它們因?yàn)檫@是一個(gè)由IBM主導(dǎo)的軟件而導(dǎo)致軟件開發(fā)者們拒之門外,Eclipse的身份則轉(zhuǎn)為由一個(gè)固定員工的組織所維護(hù)的非營(yíng)利組織,
用Eclipse+gcc編譯器開始你的旅程
。它和所有的自由軟件一樣,被免費(fèi)地提供給所有熱愛開源事業(yè)的人們,通過(guò)集體的智慧將它進(jìn)行完善。Eclipse是一款跨平臺(tái)的IDE,它既不是編譯器,也不是簡(jiǎn)單的編輯器,它提供了一個(gè)開放的平臺(tái)用于為各種各樣的編譯器,開源或者不開源的,提供一個(gè)能夠共同操作的平臺(tái)。由于它是一款基于Java虛擬機(jī)的應(yīng)用軟件,因此它同時(shí)也是一款跨平臺(tái)的IDE?缙脚_(tái)的特性讓它的存在有了更有征服力的理由。眾所周知,Linux是開源社區(qū)中的一顆璀璨奪目的明珠,以Linux為核心的開源軟件組織也是數(shù)不勝數(shù),無(wú)數(shù)人為之奮斗傾盡心血。但是作為開發(fā)人員,Windows平臺(tái)上的Visual Studio一貫的平易近人(不是指價(jià)格上)讓所有的程序員所稱贊。就算是要搞Borland Delphi也有一款優(yōu)秀的IDE在實(shí)時(shí)待命。但是在Linux上有啥?對(duì)于骨灰級(jí)的程序員,拿個(gè)Emacs甚至一個(gè)記事本就可以將編程進(jìn)行到底。他們追求的無(wú)非就是換行和顯色等漂亮點(diǎn)的效果,對(duì)于項(xiàng)目級(jí)的維護(hù)和便利并沒有過(guò)高的要求,也許是一種習(xí)慣,也許是一種妥協(xié)。但是這一切因?yàn)镋clipse的出現(xiàn)而大大變樣了,程序員從紛繁的makefile中解脫出來(lái)專心于邏輯代碼的編寫,很多自動(dòng)化的組件出現(xiàn)更增加了程序的健壯性。雖然舊式的編碼方式顯得更專業(yè),但還是一定程度上束縛了生產(chǎn)力的發(fā)展。
多說(shuō)無(wú)益,反正IDE的出現(xiàn)總是預(yù)示著編程門檻的降低,隨之而來(lái)帶來(lái)的就是在該平臺(tái)上的投入的人員越來(lái)越多而讓這個(gè)平臺(tái)能夠接受越來(lái)越多的人來(lái)參與。這對(duì)這個(gè)產(chǎn)業(yè)絕對(duì)是“生產(chǎn)力大獎(jiǎng)”的。
CDT(http://www.eclipse.org/cdt/)
CDT英文全稱是C/C++ Developer Tools,CDT是為Eclipse平臺(tái)提供集成開發(fā)環(huán)境的一個(gè)項(xiàng)目。我們知道將Eclipse+CDT就可以用于開發(fā)C++了,現(xiàn)在又說(shuō)這CDT也是個(gè)IDE,這是怎么回事呢?事實(shí)是這樣的,因?yàn)镋clipse是個(gè)開放的平臺(tái),所以它希望所有的開發(fā)者都能夠參與進(jìn)來(lái)。但是現(xiàn)在市面上流行的語(yǔ)言種類太多了,多得有點(diǎn)數(shù)不過(guò)來(lái),有些甚至只有少數(shù)幾個(gè)人自己會(huì)用(比如中文編程語(yǔ)言吧)。所以Eclipse公開了自己的部分接口讓這些語(yǔ)言能夠定義帶有自己特征的部分功能?梢赃@么理解,Eclipse定義了IDE的共性部分,而類似CDT這樣的則定義了IDE的個(gè)性部分。所以它是專門針對(duì)C/C++IDE的個(gè)性化組件。有了它,用Eclipse寫C/C++代碼才顯得更有價(jià)值。
CDT的組件安裝,則是將安裝包解壓后,直接覆蓋到Eclipse的目錄下,重新啟動(dòng)Eclipse即可。關(guān)于這點(diǎn)內(nèi)容可能根據(jù)具體的版本會(huì)略有不同。當(dāng)然最簡(jiǎn)單的方式是下載C/C++版本的Eclipse。
編譯器(Complier)
每一個(gè)科班出身的程序員對(duì)這個(gè)詞都耳熟能詳,每個(gè)人對(duì)這個(gè)詞都有自己的理解。但是真正接觸過(guò)的程序員又有多少呢?來(lái)一段軟件開發(fā)技術(shù)發(fā)展的簡(jiǎn)史,傳說(shuō)在很久以前,搞計(jì)算機(jī)的都是科學(xué)家,那時(shí)候大家剛剛從硬件電板上轉(zhuǎn)到鍵盤編碼的過(guò)程中來(lái),用匯編+DOS似乎是一件很享受的事,但是那批科學(xué)家已經(jīng)青春不在了。新來(lái)的年輕人又弄出了高級(jí)語(yǔ)言這種接近人類思維的語(yǔ)言,很快匯編就成為了專屬領(lǐng)域的內(nèi)容,能用高級(jí)語(yǔ)言的地方,沒有人愿意讓匯編有用武之地。很快匯編也漸漸淡出視線。然后就是圖形化界面的出現(xiàn),但這本身并沒有改變?nèi)藗兪褂镁幾g器的方式。無(wú)非就是換成記事本去編寫代碼罷了。但是圖形化的出現(xiàn)促使了圖形化IDE的出現(xiàn),人們發(fā)現(xiàn)編譯事實(shí)上又是遵循一定規(guī)律的集合,這部分可以很容易地通過(guò)一些編程上的限制或者通過(guò)代碼可以整理出人們期待的編譯方式,于是很快makefile一類的事也變成人們可以淡忘的事了,F(xiàn)在人們使用許多優(yōu)秀的IDE,編譯不過(guò)只是按一下“編譯”或者輸入個(gè)快捷方式。那些難記的參數(shù)早已經(jīng)忘到九霄云外了。由于編程的門檻在大大降低,所以是越來(lái)越多的程序員跟編譯器無(wú)一面之緣了。我們稱他們都是被慣壞的程序員,當(dāng)然并不表示他們就怎么不好了,只是一個(gè)社會(huì)現(xiàn)象罷了。正如我們會(huì)用白米煮飯,并不需要我們?nèi)ダ斫夤茸拥膭兤し绞,也不需要去理解水稻的種植。我們只要懂得選擇哪種米能煮出更好吃的米飯就可以了。當(dāng)然了,這一點(diǎn)在Windows平臺(tái)上顯得更為常見,因?yàn)閃indows是最普及也是很優(yōu)秀的一款圖形化的操作系統(tǒng)。但是在Unix上,計(jì)算機(jī)的發(fā)展還沒有那么文明。這里的大多數(shù)程序員從水稻種植到磨成白米,樣樣都得會(huì),不然連HelloWorld都整不出來(lái)。而且每次要Say Hello就得重頭開始寫makefile,手動(dòng)編譯等。雖然這看起來(lái)很酷,但是沒有多少意思。
C/C++的編譯器很多,比較常見的優(yōu)秀作品有MS C++,GCC(G++),Borland C++等,其中在Windows平臺(tái)上基本都用MS C++,而且MS C++也是截至我發(fā)稿時(shí)最接近ISO C++標(biāo)準(zhǔn)的編譯器(據(jù)說(shuō)已經(jīng)實(shí)現(xiàn)了標(biāo)準(zhǔn)的98%以上),但是在Linux平臺(tái)上,則多數(shù)是以GCC為主,其中GNU GCC Complier則是其中的佼佼者,但是它的標(biāo)準(zhǔn)化只達(dá)到了(94%以上,但是之前一直優(yōu)于MS C++,即便如此,大部分的Linux C++開發(fā)人員仍然親睞GCC,因?yàn)樗荗penSource的)。
經(jīng)過(guò)簡(jiǎn)單的一段介紹,我們應(yīng)該對(duì)編譯器有了一點(diǎn)感覺了,可是這和我們這篇主題有啥關(guān)系?我只是一個(gè)希望點(diǎn)一下“編譯”按鈕的讀者,我并不希望makefile然后才編譯,
管理資料
《用Eclipse+gcc編譯器開始你的旅程》(http://www.oriental01.com)。這一切似乎和我沒啥關(guān)系。不過(guò)我告訴你,就算Eclipse+CDT,你仍然做不到這點(diǎn)。因?yàn)榫退闶轻槍?duì)C/C++的開發(fā),我們?nèi)匀灰?jīng)常面臨使用不同的編譯器進(jìn)行編譯的情形。甚至有些語(yǔ)法特性和標(biāo)準(zhǔn)C++并無(wú)任何關(guān)聯(lián),而僅與不同的編譯器有關(guān)。又或者有些源代碼在不同的編譯器編譯下會(huì)產(chǎn)生微妙不同的目標(biāo)代碼,而這一些則需要我們更好地理解。就算我們期望有一種通用或者說(shuō)是常用的方式來(lái)解決這個(gè)問(wèn)題,我們?nèi)匀恍枰謩?dòng)為自己配置一個(gè)簡(jiǎn)單而通用的編譯器,盡管你從不了解編譯器方面的差異,你起碼也得有一個(gè)編譯器。那么好吧,既然Eclipse的安裝如此不盡人意,那我就只能自己動(dòng)手了。如果您看過(guò)我的上兩篇文章,您或許已經(jīng)跟著做了,如果沒有,那么重復(fù)一遍。(《如何安裝MinGW 》、《如何安裝Minimal SYStem(MSYS)》)
如果您照上面那么做了,那么您的機(jī)器上已經(jīng)有了MinGW和MSYS了,換言之,您已經(jīng)有了gcc、make以及其它一些必要文件了。下面您需要做的只要設(shè)定一下環(huán)境變量即可。
設(shè)置環(huán)境變量步驟:
右鍵“我的電腦”(沒有“我的電腦”的用戶在桌面右鍵“屬性”,然后再“桌面”選項(xiàng)卡中自定義中將其選出,或者直接在Windows Explorer地址欄中輸入“我的電腦”,回車即可),選擇“屬性”,選擇“高級(jí)”選項(xiàng)卡,最下方有“環(huán)境變量”(或Alt+N打開),在下面窗格“系統(tǒng)變量”中,選擇變量“Path”,雙擊后出現(xiàn)“編輯系統(tǒng)變量”的選項(xiàng)。將我們MinGW的bin目錄全局路徑復(fù)制進(jìn)去(一般可以復(fù)制在“變量值”的最前面,或者緊跟在任何一個(gè)“;”(分號(hào),不包括引號(hào))后),點(diǎn)擊確定,即可。
如果我現(xiàn)在告訴您可以編輯C/C++代碼了,您相信么?
好吧,那么就開始我們的第一個(gè)C/C++代碼的測(cè)試,以驗(yàn)證我們的成果。
一個(gè)HelloWorld的基本步驟:
1、打開Eclipse
2、選擇一個(gè)“工作空間”(workspace)
3、選擇一個(gè)“工程”(Project)
4、在向?qū)е性O(shè)置項(xiàng)目名稱。這里我們將項(xiàng)目名稱設(shè)定為HelloEclipse,在存放路徑上,我們需要有所講究,如果我們勾選Use default location的話,我們的location位置將是步驟1中設(shè)置的路徑,我們通常需要設(shè)立子文件夾,以避免工程數(shù)量的增加而導(dǎo)致不同工程文件的交錯(cuò)。深刻理解這一點(diǎn),把兩種方案都試一下就可以了。
在Project types(項(xiàng)目類型)中,我們可以選擇一個(gè)Hello World ANSI C Project,在Toolchain中選擇MinGW GCC,這就是我們本機(jī)所擁有的編譯器了。
5、因?yàn)槲覀冞x擇了Hello World項(xiàng)目,所以我們還有一個(gè)基本設(shè)置的頁(yè)面,可以輸入一些個(gè)性化的信息。
6、如果您是在Windows上使用,則可以選擇高級(jí)設(shè)置(Advanced settings),選擇二進(jìn)制轉(zhuǎn)換器的類型(如圖),當(dāng)然,默認(rèn)情況下是選好的因此,不用顧及該部分內(nèi)容也依然會(huì)成功,但如果您遇到諸如此類的問(wèn)題,則可以看看這里是否正確設(shè)置了。
相關(guān)路徑:C/C++ Build -> Settings -> Binary Parsers
點(diǎn)擊“OK”或者“Finish”即可完成。
7、編寫個(gè)代碼試試(其實(shí)系統(tǒng)已經(jīng)為我們?cè)趕rc文件夾下生成了一個(gè))
讓我們寫一個(gè)簡(jiǎn)單的代碼試試
代碼如下:
#include <stdio.h><span>void</span>myputs(<span>char</span>* s);<span>int</span>main(){<span>char</span>* s = "<span>HelloEclipse!</span>"; myputs(s);<span>return</span>0;}<span>void</span>myputs(<span>char</span>* s){<span>while</span>(*s) { printf("<span>%c</span>",*s++); }<span>return</span>;}
另外在菜單Project中有很多Build相關(guān)的選項(xiàng),選擇Build Project后,等待編譯結(jié)束,然后點(diǎn)擊“Run”(綠色圖標(biāo)),在最下方的選項(xiàng)卡中找到Console,即可看到輸出結(jié)果。
來(lái)自:http://www.cppblog.com/mymsdn/archive/2008/08/01/57789.html