xsubpp - 將 Perl XS 程式碼轉換為 C 程式碼的編譯器
xsubpp [-v] [-except] [-s pattern] [-prototypes] [-noversioncheck] [-nolinenumbers] [-nooptimize] [-typemap typemap] [-output filename]... file.xs
此編譯器通常由 ExtUtils::MakeMaker 或 Module::Build 或其他 Perl 模組建置工具所建立的 makefile 執行。
xsubpp 會透過嵌入必要的建構來編譯 XS 程式碼為 C 程式碼,以讓 C 函式處理 Perl 值,並建立必要的連結,讓 Perl 存取這些函式。編譯器使用型別對應表來決定如何將 C 函式參數和變數對應到 Perl 值。
編譯器將搜尋名為 typemap 的型別對應表檔案。它將使用下列搜尋路徑來尋找預設型別對應表,最右邊的型別對應表優先。
../../../typemap:../../typemap:../typemap:typemap
它也會使用安裝為 ExtUtils::typemap
的預設型別對應表。
請注意,XSOPT
MakeMaker 選項可用於將這些選項新增到 MakeMaker 所產生的任何 makefiles 中。
在類型名稱中保留 '::',以便可以對應 C++ 層級類型。
將例外處理程式碼加入 C 程式碼中。
表示使用者提供的 typemap 應優先於預設 typemap。此選項可以使用多次,最後一個 typemap 具有最高優先權。
指定要產生的輸出檔案名稱。如果未指定檔案,輸出將寫入標準輸出。
將 xsubpp 版本號列印到標準輸出,然後結束。
預設情況下,xsubpp 不會自動為所有 xsubs 產生原型碼。此旗標將啟用原型。
停用執行時期測試,該測試用於判斷物件檔案(源自 .xs
檔案)和 .pm
檔案是否具有相同的版本號。
防止在輸出中包含 '#line' 指令。
停用某些最佳化。目前唯一受影響的最佳化是輸出 C 程式碼使用 target(請參閱 perlguts)。這可能會大幅降低產生的程式碼速度,但這是 5.005 及更早版本 xsubpp 的運作方式。
停用辨識 IN
、OUT_LIST
和 INOUT_LIST
宣告。
停用辨識函數簽章的 ANSI 類似描述。
目前完全不執行任何操作。此旗標在許多版本的 perl 中都是無效操作,至少可以追溯到 perl5.003_07。它在此處允許使用以維持向後相容性。
此選項不常見且不建議使用。
如果指定,則在產生的 XS 函數中,給定的字串將從 C 函數名稱的開頭移除(如果以該前綴開頭)。這只適用於沒有 CODE
或 PPCODE
區塊的 XSUB。例如,XS
void foo_bar(int i);
當 xsubpp
以 -s foo_
呼叫時,將在 Perl 中安裝一個 foo_bar
函數,但實際上在 C 中呼叫 bar(i)
。大多數時候,這與您要的相反,而且失敗模式有點模糊,因此請盡可能避免此選項。
不使用環境變數。
最初由 Larry Wall 編寫。由 Ken Williams 轉換為 ExtUtils::ParseXS
模組。
請參閱檔案 Changes。
perl(1)、perlxs(1)、perlxstut(1)、ExtUtils::ParseXS