鸚鵡虛擬機器/構建鸚鵡
最新的鸚鵡開發版可以從CPAN下載。
鸚鵡的開發由位於http://svn.parrot.org/parrot/的 SVN 倉庫控制。可以透過svn checkout從https://svn.parrot.org/parrot/trunk/獲取鸚鵡的最新版本。
由於鸚鵡仍在積極開發中,此頁面可能已過時。關於鸚鵡構建過程的最新資訊可以在http://www.parrotcode.org/source.html找到。 |
鸚鵡目前以原始碼下載的形式提供,儘管有些人試圖維護預編譯版本以供下載。這些版本通常適用於 Windows、Cygwin、Debian 和 Red Hat。將來可能會新增其他二進位制發行版。安裝預編譯的鸚鵡二進位制發行版的說明因特定平臺和打包方法而異。有關您下載的任何發行版的更多詳細資訊,請諮詢隨附的文件。此頁面將不會討論這些特定發行版,只討論從原始原始碼構建鸚鵡的方法。
nmake代替make。目前鸚鵡構建過程需要使用make、一個可用的 C 編譯器和一個可用的 Perl 5 安裝。Perl 版本應為 5.8 或更高版本。沒有這些東西,你就無法構建鸚鵡。在各種系統上對這些工具的各種組合執行自動測試,任何特定版本都應該能夠正確編譯。如果您在系統上編譯鸚鵡時遇到問題,請向 Parrot Porters 郵件列表傳送一封包含問題詳情的郵件,鸚鵡開發人員之一會盡力幫助您解決。
Configure.pl 的第一個字母是大寫的。在區分大小寫的 Unix 和 Linux 系統上,這是一個重要的區別。構建鸚鵡的第一步是執行Configure.pl指令碼,它將在您的系統上執行一些基本測試並生成一個 makefile。要自動使用最常見的選項呼叫Configure.pl,請執行程式Makefile.pl。配置過程會在您的系統上執行許多測試,以確定一些重要的引數。這些測試在某些系統上可能需要幾分鐘,請耐心等待。此外,配置會為您的系統建立一些平臺特定的程式碼檔案。如果沒有這些生成的程式碼檔案,構建過程將無法繼續。
鸚鵡根據您系統設定使用本地預設值。因此,鸚鵡可能使用與其他計算機上不同的 INTVAL 大小等值。這種使用本地預設值的行為意味著,由您的鸚鵡版本(或由其他人用相同平臺構建的版本)編譯成位元組碼的程式將比在其他平臺上編寫的程式執行得更快。在後面的章節中,我們將更多地討論這種翻譯過程。 |
Configure.pl 執行完畢後,您應該會得到一個名為Makefile的檔案(沒有後綴)。從 shell 中進入鸚鵡目錄,輸入命令 "make" 或 "nmake"(Windows 上)。這將啟動構建鸚鵡的過程。鸚鵡構建過程可能需要幾分鐘,因為要執行許多步驟。我們將在後面的章節中討論其中一些步驟。
鸚鵡的根目錄包含一個名為 MANIFEST 的檔案。MANIFEST 包含鸚鵡倉庫中所有必要檔案的列表。如果您向鸚鵡原始碼樹中添加了一個新檔案,請確保將該檔案新增到 MANIFEST 中。Configure.pl 會檢查 MANIFEST 以確保所有檔案都存在,然後再嘗試構建。
根據您想要執行的任務或使用鸚鵡的方式,可以為 Configure.pl 指定許多選項。這些選項可能會改變幾個生成檔案的組成,包括 Makefile。這裡,我們將列出其中一些選項。
| --help | 顯示幫助訊息 |
| --version | 列印有關 Configure.pl 的版本資訊 |
| --verbose | 向控制檯列印額外資訊 |
| --fatal | 如果任何步驟失敗,立即殺死 Configure,不要執行其他測試 |
| --silent | 不向控制檯輸出任何資訊 |
| --nomanicheck | 不檢查 MANIFEST 檔案以確保所有檔案都存在。 |
| --languages | 指定一個用逗號分隔的語言列表,以便在構建鸚鵡後構建這些語言。 |
| --ask | 向用戶詢問常見問題答案,而不是執行探測。 |
| --test | 首先測試配置工具,然後測試 Configure,最後測試構建工具。使用 --test=configure 測試配置工具,然後執行 Configure.pl。使用 --test=build 執行 Configure.pl,然後也測試構建工具。 |
| --debugging | 設定 --debugging=0 關閉除錯。預設情況下啟用除錯。 |
| --inline | 指定您的 C 編譯器是否支援使用 C inline 關鍵字的內聯程式碼。 |
| --optimize | 使用編譯器最佳化和一些其他加速技巧編譯鸚鵡。可以建立一個速度更快的鸚鵡,但也可能會暴露更多錯誤和故障。使用 --optimize=(flags) 指定要使用的編譯器最佳化標誌。 |
| --parrot_is_shared | 將鸚鵡動態連結到 libparrot,而不是靜態連結。 |
| --m=32 | 在 64 位平臺上,編譯 32 位鸚鵡。 |
| --profile | 開啟分析。目前只適用於 GCC 編譯器。 |
| --cage | 開啟其他警告,用於 Cage Cleaners。 |
| --cc | 指定要使用的編譯器。例如,使用 --cc=gcc 表示 GCC 編譯器,使用 --cc=cl 表示 Microsoft 的 C++ 編譯器。使用 --ccflags 指定任何其他編譯器標誌,使用 --ccwarn 開啟任何其他警告。以下是一些其他選項
|
| --intval --floatval --opcode | 設定要使用的每個值的 C 資料型別。請注意,--intval 和 --opcode 必須相同,否則可能會出現奇怪的錯誤。 |
| --ops | 指定要構建的任何可選 OPS 檔案。 |
| --pmc | 指定要構建的任何可選 PMC 檔案。 |
| --without-gmp | 不要使用 |
| --without gdbm | 在沒有 GMP 的情況下構建鸚鵡 |
| --without-opengl | 在沒有 OpenGL 支援的情況下構建鸚鵡 |
| --without-crypto | 在沒有加密庫的情況下構建鸚鵡 |
| --icu-config | 指定系統上 Unicode ICU 庫的位置。 |
| --without-icu | 在沒有 ICU 和 Unicode 支援的情況下構建鸚鵡。 |
| --maintainer | 使用 Lex 和 Yacc(或等效工具)編譯 IMCC 的詞法分析器和語法分析器。使用 --lex 指定詞法分析器的名稱,使用 --yacc 指定語法分析器的名稱。 |
| --miniparrot | 構建 miniparrot |
| --prefix | 指定一個路徑字首 |
| --exec-prefix | 指定一個執行路徑字首 |
| --bindir | 系統上二進位制可執行檔案所在的目錄 |
| --sbindir | 系統管理員可執行檔案資料夾 |
| --libexecdir | 程式可執行檔案資料夾 |
| --datadir | 用於機器無關資料的只讀資料目錄。 |
| --sysconfdir | 用於機器相關的只讀資料 |
| --sharedstatedir | 可修改的體系結構無關資料目錄 |
| --localstatedir | 可修改的體系結構相關資料目錄 |
| --libdir | 目的碼目錄 |
| --includedir | 編譯器包含檔案所在的資料夾 |
| --oldincludedir | 用於舊版本的 GCC 的 C 標頭檔案目錄 |
| --infodir | info 文件目錄 |
| --mandir | 手冊頁文件資料夾 |
構建過程完成後,您應該擁有一個 Parrot 可執行檔案(以及其他檔案)。在 Windows 系統上,該檔名為 parrot.exe。在其他系統上,檔名可能略有不同,例如沒有後綴。
本書將簡單地使用“parrot”作為呼叫 Parrot 的命令。這在您的系統上可能有所不同。 |
還建立了另外兩個有趣的程式,miniparrot.exe 和 libparrot.dll。如果您不在 Windows 系統上,這些檔案將具有不同的名稱。
對於不熟悉 make 程式的讀者來說,它是一個可以用來自動確定如何從原始碼檔案構建軟體專案的程式。在 Makefile 中,您指定依賴項列表以及從其他檔案生成一個檔案的 方法。make 然後確定構建專案的順序和方法。
make 有目標,這意味著一個 Makefile 可以有多個目標。對於 Parrot,已經定義了多個目標,可以幫助構建、除錯和測試。以下是部分構建目標列表:
| 命令 | 解釋 |
|---|---|
make |
從原始碼構建 Parrot。僅重新構建上次構建後更改的元件。 |
make clean |
刪除構建過程遺留的所有中間檔案。清理目錄樹,以便可以完全重建 Parrot。 |
make realclean |
完全刪除所有臨時檔案、所有中間檔案和所有 Makefile。在執行 make realclean 命令後,您需要再次執行 Configure.pl。 |
make test |
構建 Parrot(如果需要)並在其上執行測試套件。如果測試結果中存在錯誤,您可以嘗試自行修復,或者向 Parrot 開發者提交錯誤報告。這將受到讚賞。 |
make fulltest |
構建 Parrot(如果需要)並在每個執行核心上執行測試套件。這可能是一個非常耗時的操作,通常只在釋出新版本之前執行。 |
make smoke |
執行冒煙測試。這將執行 Parrot 測試套件並嘗試將測試結果直接傳輸到 Parrot 開發伺服器。冒煙測試結果可以幫助開發人員跟蹤 Parrot 在哪些系統上可以正確構建。 |
如上所述,冒煙測試是向我們提交有關您系統上 Parrot 資訊的簡便方法。由於 Parrot 應該支援許多不同的計算機體系結構和作業系統,因此很難知道 Parrot 在所有系統上的執行情況。
除了冒煙測試,您還可以透過多種方式向 Parrot 提交錯誤報告。如果您是一名熟練的程式設計師,您可能也有興趣嘗試修復錯誤並提交補丁。