GCC開發(fā)工具簡介
——
自由軟件基金會(huì)的志愿者們開發(fā)了很多種類的編譯器,并且可以提供程序的源代碼,條件是任何人如果在其源代碼基礎(chǔ)上開發(fā)出新的產(chǎn)品的話,都應(yīng)當(dāng)事先聲明其開發(fā)基礎(chǔ)。
在Palm 1000型掌上電腦正式推出時(shí),唯一的Plam開發(fā)環(huán)境只有基于Macintosh的CodeWarrior。很多Unix和Windows的程序員都希望開發(fā)Palm應(yīng)用軟件,但是不希望還要去購買Macintosh操作系統(tǒng)和計(jì)算機(jī)。一些富有進(jìn)取心和熱心的程序員對當(dāng)時(shí)的GCC作了改進(jìn),添加了一個(gè)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平臺(tái),其組成部分包括:
GCC
這也是該軟件包中最重要的工具,它能夠?qū)/C++程序編譯成Motorola 68K形式。
GDB
這是一個(gè)源代碼等級的得調(diào)試器
PilRC
這是一個(gè)Palm應(yīng)用程序資源編譯器。它能夠?qū)⑽谋拘问降馁Y源表述轉(zhuǎn)化為應(yīng)用程序的資源代碼。這些表述資源的文本文件包含了對資源的描述,并且器擴(kuò)展名為.RCP。
PilrcUI
這個(gè)軟件能夠以圖形界面的形式顯示RCP文件,以便開發(fā)者能夠預(yù)覽一下自己軟件的資源文件在掌上設(shè)備上的顯示效果。圖中顯示了一個(gè)PilrcUI的工作界面。
Copilot
該軟件能夠在硬件等級上模擬掌上設(shè)備的運(yùn)行。它需要一個(gè)來自實(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)。并且每時(shí)每刻都有新的資源來源出現(xiàn)。因此,您最好經(jīng)常去看一看Palm公司網(wǎng)站上提供的著方面的最新信息。如果您像一次獲得所有的GCC開發(fā)組件的話,可能這是一個(gè)比較艱巨的下載任務(wù),因?yàn)槿课募写蠹s15M。因此,請確認(rèn)您有充裕的時(shí)間。筆者最常光顧的GCC工具下載地址是Ray's Software Archive(http://www.palmcentral.com/)。
由于免費(fèi)的GCC工具包自身不帶有商業(yè)化的Conduit開發(fā)工具包CDK,因此GCC的用戶在需要開發(fā)Conduit時(shí),有兩個(gè)選擇:您可以單獨(dú)購買Palm公司的Conduit SDK工具包,大約需要99美元?;蛘吣透纱嗤耆蕾嘝alm OS自帶的那個(gè)備份Conduit。
您也可以加入 Massena GCC 討論組,以便獲得更深入的關(guān)于GCC開發(fā)的討論信息。
GCC的安裝
除了安裝GCC工具包本身以外,您還需要安裝Palm OS SDK。其中包含了必需的庫文件和頭文件。3.5版本以上的SDK能夠直接和GCC配合使用,而無需任何修改。而早期的SDK版本則需要經(jīng)過改動(dòng)才能使用。您可以在“GCC開發(fā)工具”頁面獲得更多的有關(guān)如何進(jìn)行修改的信息。
您可能希望安裝好幾個(gè)版本的SDK,并且希望其中的一個(gè)稱為系統(tǒng)缺省默認(rèn)的版本,以便于能夠在編譯的時(shí)候無需任何的`-palmosN'命令行選項(xiàng)。一個(gè)叫做`sdk'的符號(hào)連接能夠用來設(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時(shí),你已經(jīng)獲得了info格式地文檔。)
您可以下載一些范例程序 (90 Kb)。
您將需要一個(gè)Palm OS SDK。并且無論你獲得的是哪個(gè)版本,它們都應(yīng)當(dāng)被安裝在/usr/local/palmdev目錄。
您需要PilRC來進(jìn)行資源編譯。
注意:由于Palm公司的網(wǎng)絡(luò)服務(wù)器上對于涉及到"RPM"擴(kuò)展名文件的處理上的一些小問題,您最好使用Windows操作系統(tǒng)的計(jì)算機(jī)來下載,以便于保證下載的正確性,防止出現(xiàn)CR-LF終止的問題。然后,再通過一個(gè)工作區(qū),將文件傳送到Unix計(jì)算機(jī)上。
在Windows系統(tǒng)上安裝
如果您以前安裝過prc-tools 0.5.0版,您可能需要將其刪除。因?yàn)樵摪姹局械囊粋€(gè)動(dòng)態(tài)鏈接庫文件cygwin1.dll和當(dāng)前最新版本相沖突。同時(shí),prc-tools 0.5.0版定義了一個(gè)GCC_EXEC_PREFIX環(huán)境變量,它在最新版本的GCC中會(huì)引起錯(cuò)誤。所以您需要確保該變量沒有被設(shè)置。
Prc-tools需要Cygwin b20.1的支持,因此,在您安裝Prc-tools之前,你首先要安裝它。在安裝時(shí),您由兩種選擇: 選擇完全安裝(14M)——您可以獲得所需要的動(dòng)態(tài)鏈接庫文件,還有大量的Windows環(huán)境下的開發(fā)工具。包括一個(gè)原有的Cygwin GCC。(如果您正在使用Handspring's GCC tools的話,這個(gè)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格式),以及一些范例程序。
您可能還需要一個(gè) Palm OS SDK。您可以安裝任何版本的SDK。
您還需要PilRC用來編譯您的資源文件。
Cygwin的安裝過程需要在您的安裝路徑中包含Cygwin,具體信息請見自述文件??赡苣阃瑯有枰砑觩rc-tools。在此之后,您就可以開工了!
總之,您需要下載和安裝的內(nèi)容如下:
完全安裝Cygwin(或者選擇安裝Cygwin user tools和make)
Prc-tools 2.0
一個(gè)以上的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版本中存在一個(gè)浮點(diǎn)方面的bug:無法完成浮點(diǎn)數(shù)據(jù)和整型數(shù)據(jù)之間的轉(zhuǎn)換。該問題將會(huì)在PRC-Tools 2.1版本中被解決。在此期間,如果您確實(shí)要在您的開發(fā)中使用到浮點(diǎn)數(shù)據(jù)的話,您可以通過下載一個(gè)庫文件,取代原有庫文件的方式來解決。這個(gè)庫文件分為Unix 和 Windows兩個(gè)版本。如果您的開發(fā)中不涉及到浮點(diǎn)數(shù)據(jù),那么這個(gè)bug并不會(huì)影響您。
編譯和連接源代碼
如果您要自己完成本開發(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í)時(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兩個(gè)版本。
其它有用的資源
談到這里,您應(yīng)該可以開始安裝和運(yùn)行您的PRC-Tools工具包了。在此,我們?yōu)槟谐隽艘恍┚W(wǎng)絡(luò)資源的鏈接清單,希望對您有進(jìn)一步的幫助: Aaron Ardiri寫了一篇很不錯(cuò)的“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)您使用的時(shí)Linux操作系統(tǒng)時(shí)。 O'Reilly的“Palm Programming; A developer's guide”并不是最好的Palm編程參考書籍,但是它是唯一可以在網(wǎng)上免費(fèi)察看的一本。 Palm OS推出的“SDK Documentation??乏T?"??????”是最基本的參考資料。您不僅可以在該網(wǎng)站上察看html網(wǎng)頁文件,也可以下載pdf格式的文件,同時(shí)還可以購買打印的文檔。 Dan Parson的文章“A Simple PalmOS Application written in C”可能是一篇比較老的文章。但是如果您忽略新版本的SDK帶來的那些兼容性問題的話,它還是比較有價(jià)值的一篇文章。 在Palm OS SDK中附帶了很多范例程序。但是目前只有其中的兩篇是能夠完全被PRC-Tools編譯的。不過其它的程序,只要簡單的讀一讀源代碼,還是足夠的。(這些范例程序最初都是為CodeWarrior編寫的。) 前面提到的“POSE HOWTO”中有一個(gè)非常簡單的“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í)時(shí)支持代碼目前處于公開狀態(tài)。結(jié)果對象代碼(resulting object code)也可以自由地被連接到用戶的程序中。
對于“l(fā)ibc”子目錄中的代碼的規(guī)定如下:
libc.a
liba.sa——這是一個(gè)小型的標(biāo)準(zhǔn)的C語言庫文件(靜態(tài)和共享版)。包含了type, printf, friends, putchar() 和 printf()用于向LCD輸出(甚至滾動(dòng)顯示)。我們不希望這些函數(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ù)功能,如加法,乘法等,本來用戶希望來自于一個(gè)完整的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++教程
評論