新聞中心

EEPW首頁 > GCC開發(fā)工具簡介

GCC開發(fā)工具簡介

——
作者: 時間:2007-04-17 來源:51CMM.COM 收藏
在軟件開發(fā)者組織中,想來遵循一條由來已久的備受尊重的傳統(tǒng):開發(fā)工具,包括,應(yīng)當(dāng)是免費(fèi)提供給開發(fā)者的。其中有一個頂尖級的組織——自由軟件基金會,長期以來致力于提供免費(fèi)的編程工具。該組織的志愿者們已經(jīng)認(rèn)真負(fù)責(zé)地開發(fā)出了很多一流的。其中一個非常杰出的就是GCC(GNU C Compiler),這是一個通用C/C++編譯。該在Unix和很多Win32平臺上得到了廣泛的應(yīng)用。 注意: 
自由軟件基金會的志愿者們開發(fā)了很多種類的編譯器,并且可以提供程序的源代碼,條件是任何人如果在其源代碼基礎(chǔ)上開發(fā)出新的產(chǎn)品的話,都應(yīng)當(dāng)事先聲明其開發(fā)基礎(chǔ)。 
在Palm 1000型掌上電腦正式推出時,唯一的Plam開發(fā)環(huán)境只有基于Macintosh的CodeWarrior。很多Unix和Windows的程序員都希望開發(fā)Palm應(yīng)用軟件,但是不希望還要去購買Macintosh操作系統(tǒng)和計算機(jī)。一些富有進(jìn)取心和熱心的程序員對當(dāng)時的GCC作了改進(jìn),添加了一個PalmPilot編譯器端口,用于生成Palm OS的二進(jìn)制文件。然后很多的開發(fā)工具被組合在一起,成為了正式名稱為GNU PalmPilot SDK,但是民間稱呼為GCC的Palm開發(fā)工具。 
GNU PalmPilot SDK的內(nèi)容 
該軟件開發(fā)工具包(SDK)可以幫助您用C/C++開發(fā)Palm OS應(yīng)用軟件。并且支持Unix 或者 Windows平臺,其組成部分包括: 
GCC 
這也是該軟件包中最重要的工具,它能夠?qū)/C++程序編譯成Motorola 68K形式。 
GDB 
這是一個源代碼等級的得調(diào)試器 
PilRC 
這是一個Palm應(yīng)用程序資源編譯器。它能夠?qū)⑽谋拘问降馁Y源表述轉(zhuǎn)化為應(yīng)用程序的資源代碼。這些表述資源的文本文件包含了對資源的描述,并且器擴(kuò)展名為.RCP。 
PilrcUI 
這個軟件能夠以圖形界面的形式顯示RCP文件,以便開發(fā)者能夠預(yù)覽一下自己軟件的資源文件在掌上設(shè)備上的顯示效果。圖中顯示了一個PilrcUI的工作界面。 
Copilot 
該軟件能夠在硬件等級上模擬掌上設(shè)備的運(yùn)行。它需要一個來自實(shí)際的掌上設(shè)備的ROM Image的支持,以便能夠惟妙惟肖地模仿掌上設(shè)備的運(yùn)行效果。該軟件的更進(jìn)一步的開發(fā)工作已經(jīng)由Palm公司接管。詳情請見第十章的“調(diào)試Palm應(yīng)用程序”部分。 
如何獲得GCC 
在網(wǎng)絡(luò)上有很多地方提供GCC方面的資源。關(guān)鍵是看您使用的是Unix 還是 Windows操作系統(tǒng)。并且每時每刻都有新的資源來源出現(xiàn)。因此,您最好經(jīng)常去看一看Palm公司網(wǎng)站上提供的著方面的最新信息。如果您像一次獲得所有的GCC開發(fā)組件的話,可能這是一個比較艱巨的下載任務(wù),因?yàn)槿课募写蠹s15M。因此,請確認(rèn)您有充裕的時間。筆者最常光顧的GCC工具下載地址是Ray's Software Archive(http://www.palmcentral.com/)。
由于免費(fèi)的GCC工具包自身不帶有商業(yè)化的Conduit開發(fā)工具包CDK,因此GCC的用戶在需要開發(fā)Conduit時,有兩個選擇:您可以單獨(dú)購買Palm公司的Conduit SDK工具包,大約需要99美元?;蛘吣透纱嗤耆蕾嘝alm OS自帶的那個備份Conduit。 
您也可以加入 Massena GCC 討論組,以便獲得更深入的關(guān)于GCC開發(fā)的討論信息。
GCC的安裝
除了安裝GCC工具包本身以外,您還需要安裝Palm OS SDK。其中包含了必需的庫文件和頭文件。3.5版本以上的SDK能夠直接和GCC配合使用,而無需任何修改。而早期的SDK版本則需要經(jīng)過改動才能使用。您可以在“GCC開發(fā)工具”頁面獲得更多的有關(guān)如何進(jìn)行修改的信息。
您可能希望安裝好幾個版本的SDK,并且希望其中的一個稱為系統(tǒng)缺省默認(rèn)的版本,以便于能夠在編譯的時候無需任何的`-palmosN'命令行選項(xiàng)。一個叫做`sdk'的符號連接能夠用來設(shè)置系統(tǒng)缺省的SDK版本。如,我們設(shè)置3.5版本的SDK為默認(rèn)值的操作如下: $ cd /usr/local/palmdev
$ rm -f sdk
$ ln -s sdk-3.5 sdk 
在Unix RPMs上安裝 
目前已經(jīng)可以在Unix系列的系統(tǒng)環(huán)境下安裝該工具。這其中也包括了在Intel i386構(gòu)架(有 glibc 2.1 (libc 6))的Linux環(huán)境下的安裝。(例如,這意味著RedHat 6.0以上的操作系統(tǒng)也可以安裝PRC-Tools。)使用其他版本Unix操作系統(tǒng)的用戶也可以進(jìn)行編譯連結(jié)工作。 安裝prc-tools-2.0 (4.4 Mb)。務(wù)必使用/usr/local安裝目錄。 
如果您愿意,您可以安裝prc-tools-htmldocs-2.0 (850 Kb),以便獲得HTML格式的文檔。(在您安裝主要的RPM時,你已經(jīng)獲得了info格式地文檔。) 
您可以下載一些范例程序 (90 Kb)。 
您將需要一個Palm OS SDK。并且無論你獲得的是哪個版本,它們都應(yīng)當(dāng)被安裝在/usr/local/palmdev目錄。 
您需要PilRC來進(jìn)行資源編譯。 

注意:由于Palm公司的網(wǎng)絡(luò)服務(wù)器上對于涉及到"RPM"擴(kuò)展名文件的處理上的一些小問題,您最好使用Windows操作系統(tǒng)的計算機(jī)來下載,以便于保證下載的正確性,防止出現(xiàn)CR-LF終止的問題。然后,再通過一個工作區(qū),將文件傳送到Unix計算機(jī)上。 
在Windows系統(tǒng)上安裝 
如果您以前安裝過prc-tools 0.5.0版,您可能需要將其刪除。因?yàn)樵摪姹局械囊粋€動態(tài)鏈接庫文件cygwin1.dll和當(dāng)前最新版本相沖突。同時,prc-tools 0.5.0版定義了一個GCC_EXEC_PREFIX環(huán)境變量,它在最新版本的GCC中會引起錯誤。所以您需要確保該變量沒有被設(shè)置。 
Prc-tools需要Cygwin b20.1的支持,因此,在您安裝Prc-tools之前,你首先要安裝它。在安裝時,您由兩種選擇: 選擇完全安裝(14M)——您可以獲得所需要的動態(tài)鏈接庫文件,還有大量的Windows環(huán)境下的開發(fā)工具。包括一個原有的Cygwin GCC。(如果您正在使用Handspring's GCC tools的話,這個Cygwin GCC將和您現(xiàn)有的cygwin_b20.1.exe程序完全一樣。) 
如果您不需要這些工具,也不想浪費(fèi)磁盤空間,您可以選擇user tools only Cygwin安裝(3M)。它包括了基本的必需工具。和完全安裝相比,唯一沒有被安裝,但是卻可能需要的工具就是make(55K),您可能希望將其添加到您的Cygwin H-i586-cygwin32bin目錄。
(如果您感興趣的話,您可以獲得Cygwin的源代碼) 

您現(xiàn)在已經(jīng)可以來安裝 prc-tools 2.0 了(7 Mb)。您可以選擇安裝的內(nèi)容:開發(fā)工具體系自身,工具的文檔(HTML格式),以及一些范例程序。 
您可能還需要一個 Palm OS SDK。您可以安裝任何版本的SDK。 
您還需要PilRC用來編譯您的資源文件。 
Cygwin的安裝過程需要在您的安裝路徑中包含Cygwin,具體信息請見自述文件??赡苣阃瑯有枰砑觩rc-tools。在此之后,您就可以開工了!
總之,您需要下載和安裝的內(nèi)容如下: 

完全安裝Cygwin(或者選擇安裝Cygwin user tools和make) 
Prc-tools 2.0 
一個以上的Palm OS SDKs 
PilRC 
  
注意:在Windows系統(tǒng)下,對應(yīng)于/usr/local/palmdev的目錄是C:PalmDev。 
在Windows系統(tǒng)下,您需要添加prc-tools 二進(jìn)制文件目錄到您的安裝路徑中。即添加目錄:<prc-tools-安裝的根目錄>H-i586-cygwin32bin。例如您將PRC-Tools 安裝在了缺省的目錄下,那么,您必需添加下列代碼到您的AUTOEXEC.BAT文件中: set PATH="C:Program FilesPRC-ToolsH-i586-cygwin32bin;%PATH%"   更多的技術(shù)文檔,您可以閱讀有關(guān)prc-tools, gcc的頁面。這些HTML格式的文件將被安裝在下列目錄: file:///C:/PalmDev/doc/index.html (Windows系統(tǒng))
或者
file:/usr/local/palmdev/doc/index.html (Unix系統(tǒng))     在當(dāng)前的PRC-Tools版本中存在一個浮點(diǎn)方面的bug:無法完成浮點(diǎn)數(shù)據(jù)和整型數(shù)據(jù)之間的轉(zhuǎn)換。該問題將會在PRC-Tools 2.1版本中被解決。在此期間,如果您確實(shí)要在您的開發(fā)中使用到浮點(diǎn)數(shù)據(jù)的話,您可以通過下載一個庫文件,取代原有庫文件的方式來解決。這個庫文件分為Unix 和 Windows兩個版本。如果您的開發(fā)中不涉及到浮點(diǎn)數(shù)據(jù),那么這個bug并不會影響您。 
編譯和連接源代碼 
如果您要自己完成本開發(fā)工具包的編譯和連接工作的話,您需要從GCC Tools頁面下載該工具包的源文件。您可能還需要GCC 2.95.2, binutils 2.9.1, 和 gdb 4.18的源文件。這些都可以在GNU web site上面的BUILDING.html頁面找到。 
理論上講,最新版本的PRC-Tools能夠在支持GCC的Unix類型的操作系統(tǒng)上毫不費(fèi)力的進(jìn)行源代碼的編譯連接工作。無論是tarball 還是 source RPM形式的都能支持。 
您尤其需要下載針對binutils-2.9.1, gdb-4.18, 和 GCC-2.95.2的源代碼。并且您需要利用Palm OS SDK來編譯crt, libc, 和 libm目錄下的實(shí)時支持代碼 
Palm OS SDKs 
除了安裝編譯器、開發(fā)工具以外,您還需要安裝Palm OS SDK來對軟件進(jìn)行編譯。SDK 3.5版本能夠支持當(dāng)前最新版本的PRC-Tools。 
但是,earlier SDKs需要做一些簡單的修改才能配合PRC-Tools使用。您可以下載到適合SDK 1.0, 2.0, 3.1版本的補(bǔ)丁。它們都擁有Windows 和 Unix兩個版本。 
其它有用的資源 
談到這里,您應(yīng)該可以開始安裝和運(yùn)行您的PRC-Tools工具包了。在此,我們?yōu)槟谐隽艘恍┚W(wǎng)絡(luò)資源的鏈接清單,希望對您有進(jìn)一步的幫助: Aaron Ardiri寫了一篇很不錯的“Setting up PRC-Tools under Windows”(在Windows環(huán)境下安裝PRC-Tools)。盡管它的這篇文章中的很多內(nèi)容和本文差不多,但是它里面有一些本文沒有涉及到的細(xì)節(jié)內(nèi)容,尤其是它詳細(xì)介紹了用戶如何自定義安裝的信息,包括更改新的安裝目錄,以及為此必須做的全部修改等。 David Silber的“Palm OS Application Development HOW TO”是一篇很好的使用指南,尤其是當(dāng)您使用的時Linux操作系統(tǒng)時。 O'Reilly的“Palm Programming; A developer's guide”并不是最好的Palm編程參考書籍,但是它是唯一可以在網(wǎng)上免費(fèi)察看的一本。 Palm OS推出的“SDK Documentation??乏T?"??????”是最基本的參考資料。您不僅可以在該網(wǎng)站上察看html網(wǎng)頁文件,也可以下載pdf格式的文件,同時還可以購買打印的文檔。 Dan Parson的文章“A Simple PalmOS Application written in C”可能是一篇比較老的文章。但是如果您忽略新版本的SDK帶來的那些兼容性問題的話,它還是比較有價值的一篇文章。 在Palm OS SDK中附帶了很多范例程序。但是目前只有其中的兩篇是能夠完全被PRC-Tools編譯的。不過其它的程序,只要簡單的讀一讀源代碼,還是足夠的。(這些范例程序最初都是為CodeWarrior編寫的。) 前面提到的“POSE HOWTO”中有一個非常簡單的“hello world”程序范例。 
版權(quán)協(xié)議 
GNU工具包中的in *.palmos.diff形式的補(bǔ)丁程序和“tools”子目錄中的代碼都是免費(fèi)的軟件。包括本2.0版本在內(nèi)的,以及以后的版本(如果你愿意)的工具包,在GNU普通公開協(xié)議(GNU General Public License)規(guī)定的范圍內(nèi)都可以可以被重構(gòu)、修改。詳情請見COPYING文件。 
在“crt”子目錄中的實(shí)時支持代碼目前處于公開狀態(tài)。結(jié)果對象代碼(resulting object code)也可以自由地被連接到用戶的程序中。 
對于“l(fā)ibc”子目錄中的代碼的規(guī)定如下:
libc.a
liba.sa——這是一個小型的標(biāo)準(zhǔn)的C語言庫文件(靜態(tài)和共享版)。包含了type, printf, friends, putchar() 和 printf()用于向LCD輸出(甚至滾動顯示)。我們不希望這些函數(shù)被非常泛濫地用于調(diào)試以外的用途,或者被用于最終的程序中。相同的還有String函數(shù)、memmove、bcopy等。很多庫函數(shù)都是來自于Linus Torvalds,都可以在Linux 內(nèi)核的 “l(fā)ib”目錄中找到。其作者許可我們公布這些,而不用GPL抵押。(詳情在prc-tools 0.5.0的自述文件中,作者是Jeff Dionne。) 
“l(fā)ibm”子目錄中的代碼來源于Cephes Math Library,這方面的權(quán)限是這樣規(guī)定的:
libm.a
單精度數(shù)學(xué)函數(shù)庫。一些最基本的數(shù)學(xué)函數(shù)功能,如加法,乘法等,本來用戶希望來自于一個完整的libm.a函數(shù)庫。但是在最后的編譯過程中,應(yīng)該使用libgcc.a來實(shí)現(xiàn)這些功能。而libm.a函數(shù)庫的版權(quán)屬于Cephes Math Library 2.2版, 1992年6月發(fā)布, Copyright 1984, 1987, 1988 by Stephen L. Moshier。

c++相關(guān)文章:c++教程




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉