(鏡像在 GitHub 上)
cproc
是使用 QBE 作為後端的 C11 編譯器。它是根據 ISC 許可證發布的。
也實作了一些 C23 功能和 GNU C 擴充。
還有很多工作要做,但它目前實現了大部分語言,並且能夠建立軟體,包括它本身、mcpp、gcc 4.7、binutils 等。
它受到其他幾個小型 C 編譯器的啟發,包括 8cc、c、lacc 和 scc。
編譯器本身是用標準 C99 寫的,可以使用任何符合 C99 的編譯器來建置。
POSIX 驅動程式依賴 POSIX.1-2008 接口,且Makefile
需要 POSIX 相容的 make(1)。
在運行時,您將需要 QBE、彙編器和目標系統的連結器。由於預處理器尚未實現,因此目前還需要一個外部預處理器。
QBE 支援的所有架構都應該可以工作(目前為 x86_64、aarch64 和 riscv64)。
以下目標經過持續建置測試,並且已知可以引導並通過所有測試:
x86_64-linux-musl
x86_64-linux-gnu
x86_64-freebsd
aarch64-linux-musl
aarch64-linux-gnu
riscv64-linux-gnu
執行./configure
建立適合您系統的config.h
和config.mk
。如果設定腳本不支援您的系統,您可以手動建立這些檔案。 config.h
應該定義幾個字串陣列( static char *[]
):
startfiles
:在連結指令開頭傳遞給連結器的物件。endfiles
:在連結指令(包括 libc)末端傳遞給連結器的物件。preprocesscmd
:預處理器指令以及目標系統的任何必要標誌。codegencmd
:QBE 指令,以及可能的明確目標標誌。assemblecmd
:彙編指令。linkcmd
:連結器指令。您可能還想使用適當的CC
、 CFLAGS
和LDFLAGS
自訂您的環境或config.mk
。
完成此操作後,您可以使用
make
Makefile
包含其他幾個可用於引導的目標。這些目標需要能夠執行config.h
中指定的工具。
stage2
:使用初始( stage1
)輸出建構編譯器。stage3
:使用stage2
輸出建構編譯器。bootstrap
:建構stage2
和stage3
編譯器,並驗證它們在位元組方面是否相同。 volatile
限定類型 (#7)。long double
類型 (#3)。~mcf/[email protected] 上有郵件清單。請隨意將其用於一般討論、問題、補丁或錯誤報告(如果您沒有 sr.ht 帳戶)。
請將任何問題報告至 ~mcf/[email protected]。
非常感謝補丁。將它們傳送到郵件清單(首選),或作為 GitHub 映像上的拉取請求。