h2ph - 將 .h C 標頭檔轉換為 .ph Perl 標頭檔
h2ph [-d 目標目錄] [-r | -a] [-l] [-h] [-e] [-D] [-Q] [標頭檔]
h2ph 會將指定的任何 C 標頭檔轉換為對應的 Perl 標頭檔格式。最簡單的執行方式是在 /usr/include 中執行
cd /usr/include; h2ph * sys/*
或
cd /usr/include; h2ph * sys/* arpa/* netinet/*
或
cd /usr/include; h2ph -r -l .
輸出檔會放置在 Perl 的架構依賴函式庫目錄的階層結構中。您可以使用 -d 參數指定不同的階層結構。
如果在沒有參數的情況下執行,會將標準輸入過濾到標準輸出。
將產生的 .ph 檔放在 目標目錄底下,而不是放在 Perl 函式庫的預設位置 ($Config{'installsitearch'}
)。
遞迴執行;如果任何 headerfiles 是目錄,則對這些目錄(及其子目錄等)中的所有檔案執行 h2ph。-r 和 -a 互斥。
自動執行;轉換 headerfiles,以及它們包含的任何 .h 檔案。此選項會在 C 編譯器通常使用的所有目錄中搜尋 .h 檔案。-a 和 -r 互斥。
符號連結會複製到目標目錄中。如果未指定 -l,則會略過連結。
在 .ph 檔案中放入「提示」,有助於找出 h2ph 的問題。在您需要包含語法錯誤的 .ph 檔案時,會看到略微有幫助的,而不是難以理解的
[ some error condition ] at (eval mmm) line nnn
[ some error condition ] at filename.ph line nnn
但是,使用 -h 建置時,.ph 檔案的大小幾乎會增加一倍。
如果在轉換過程中遇到錯誤,則會移除輸出檔案並發出警告,而不是立即終止轉換。
將 .h 檔案中的程式碼作為註解包含在 .ph 檔案中。這主要用於除錯 h2ph。
「安靜」模式;不要列印出正在轉換的檔案名稱。
不使用環境變數。
/usr/include/*.h
/usr/include/sys/*.h
等
Larry Wall
perl(1)
如果無法讀取或寫入相關檔案,則會發出通常的警告。
不會為您建構 %sizeof 陣列。
它不會處理所有 C 結構,但它會嘗試在評估中隔離定義,以便您可以取得它可以轉換的定義。
它只是一個粗略的工具。您可能需要修改產生的檔案。
您必須手動執行此程式;它不會作為 Perl 安裝的一部分執行。
無法處理分段建立的複雜表達式,例如
enum {
FIRST_VALUE,
SECOND_VALUE,
#ifdef ABC
THIRD_VALUE
#endif
};
不一定會找到所有 C 編譯器內部定義的符號。