是一個互動式編譯器探索網站。使用 C、C++、C#、F#、Rust、Go、D、Haskell、Swift、Pascal、ispc、Python、Java 或任何其他 30 多種支援的語言元件編輯程式碼,並查看程式碼在編譯後的外觀即時的。
Bug 報告 · 編譯器請求 · 功能請求 · 語言請求 · 函式庫請求 · 報告漏洞
每種語言都支援多個編譯器,有許多不同的工具和視覺化可供使用,並且 UI 佈局是可配置的(感謝 GoldenLayout)。
在 godbolt.org 上嘗試,或執行您自己的本機執行個體。這裡概述了該網站可以幫助您實現什麼、為什麼有用以及如何使用它。
Compiler Explorer遵循旨在營造開放、熱情的環境的行為準則。
Compiler Explorer於 2012 年啟動,旨在展示 C++ 結構如何轉換為彙編程式碼。它以tmux
會話開始,其中vi
在一個窗格中運行,並watch gcc -S foo.cc -o -
在另一個窗格中運行。
從那時起,它已成為每週提供超過 3,000,000 次編輯的公共網站。
您可以在 Patreon、GitHub、Paypal 上為該專案提供財務支持,或在 Compiler Explorer 商店購買酷炫的裝備。
儲存庫 wiki 中現在有一個常見問題解答部分。如果您的問題不存在,請按照如下所述聯絡我們,以便我們為您提供協助。如果您發現常見問題解答缺少某些要點,請隨時對其做出貢獻和/或要求我們進行澄清。
幾個影片展示了編譯器資源管理器的一些功能:
路線圖可以讓您對Compiler Explorer的未來計畫有一些了解。
Compiler Explorer是在 Node.js 上用 TypeScript 編寫的。
假設您安裝了相容版本的node
,在 Linux 上只需執行make
就應該讓您啟動並執行在本機電腦上的連接埠 10240 上執行的資源管理器:http://localhost:10240/。如果這不適合您,請聯絡我們,因為我們認為快速輕鬆地開始運行非常重要。目前, Compiler Explorer需要安裝node
20,無論是在路徑上還是在NODE_DIR
(環境變數或make
參數)處。
使用make EXTRA_ARGS='--language LANG'
運行將允許您專門載入LANG
,其中LANG
是lib/languages.ts
中定義的語言 ID/別名之一。例如,若要僅執行支援 C++ 的編譯器資源管理器,您可以執行make EXTRA_ARGS='--language c++'
。您可以提供多個--language
參數來限制為多種語言。 Makefile
會自動安裝運作所需的所有第三方函式庫;使用npm
安裝伺服器端和客戶端元件。
對於開發,我們建議使用make dev
來啟用一些有用的功能,例如檔案變更時自動重新載入和更短的啟動時間。
如果make dev
在您的電腦上不起作用,您也可以使用npm run dev
來運行。
有些語言需要額外的工具來分解它們,例如rust
、 d
或haskell
。此類工具單獨保存在工具儲存庫中。
配置編譯器資源管理器是透過etc/config
目錄中的設定檔實現的。值是key=value
。 {type}.local.properties
檔案中的選項(其中{type}
是c++
或類似檔案)會覆寫{type}.defaults.properties
檔案中的任何內容。有一個.gitignore
文件可以忽略*.local.*
文件,因此這些文件不會被簽入 git,並且當您git pull
時,您不會發現自己正在與更新的版本作鬥爭。有關詳細信息,請參閱添加編譯器。
檢查 CONTRIBUTING.md 以獲取有關如何為Compiler Explorer做出貢獻的詳細信息,並查看docs 資料夾以獲取有關您可能想要執行的各種操作的具體詳細信息,例如如何向網站添加新的編譯器或語言。
如果您想將其指向您自己的 GCC 或類似的二進位文件,請編輯etc/config/LANG.defaults.properties
或建立名為LANG.local.properties
的新文件,並根據需要替換LANG
。 *.local.properties
檔案在載入屬性時具有最高優先權。
如果你想支援像godbolt.org這樣的多種編譯器和語言,你可以在infra專案中使用bin/ce_install install compilers
指令來安裝全部或部分編譯器。以這種方式安裝的編譯器可以透過etc/config/*.amazon.properties
中的設定載入。如果您需要在完全離線的環境中進行部署,則可能需要刪除從www.godbolt.ms@443
拉取的配置的某些部分。
在公司環境中運行時,如果預設儲存驅動程式不適合您的環境,則可以將 URL 縮短服務替換為內部服務。為此,請在lib/shortener/myservice.js
中新增一個模組,並在配置中設定urlShortenService
變數。此模組應匯出單一函數,請參閱tinyurl 模組以取得範例。
有一個簡單的 Restful API,可用於編譯為 asm 並列出編譯器。
您可以在此處找到 API 文件。
我們運行 Compiler Explorer Discord,這是一個討論使用或開發 Compiler Explorer 的地方。我們也在 cpplang Slack 頻道#compiler_explorer
上露面,並且我們有一個公共郵件清單。
Discord 上有一個開發頻道,還有一個開發郵件清單。
請隨時在 github 上提出問題或直接向 Matt 發送電子郵件以獲得更多協助。
以下是編譯器資源管理器的官方網域:
這些網域允許任意子網域,例如 https://foo.godbolt.org/,這很方便,因為每個子網域都有獨立的本機狀態。此外,語言子網域(例如 https://rust.compiler-explorer.com/)將使用已選取的語言載入。
Compiler Explorer由 AUTHORS 文件中列出的優秀人員維護。
我們要感謝 CONTRIBUTORS 文件中列出的貢獻者,他們幫助塑造了Compiler Explorer 。
我們也要特別感謝這些人對Compiler Explorer 的貢獻:
許多令人驚嘆的贊助商,包括個人和公司,都幫助資助和推廣 Compiler Explorer。