目錄

edk2 clang toolchain on Windows

不知道有沒有人發現,在 edk2-stable202508 這版 release 中,增加了 clang 在 Windows 下的官方支援了!

在 Windows 下要自己硬搞 LLVM + MINGW 其實也不是不行, 總歸不是官方支援也許是大家都厭倦了在 Windows 下用 M$ + 防毒軟體(都不知道在防誰) + 超級慢的 Visual Studio C compiler 一日過一日的荼毒,終於有人出來要把這件事解決了。

換 clang 有什麼好處?

好處可太多了

  • 建置時間變短了(光這個我就想換),有可能差到 3 倍之多
  • 產生出來的檔案大小可以變小,對我們做 firmware 這種在乎 size 的人來說很有利
  • Windows 跟 Linux 都可以用,總算不用改完 Windows build 壞 Linux build
  • GCC 相容, 如果本來習慣用 GCC 的人也可以無痛轉換
  • Clang 提供的 build error 訊息更直觀,更清楚
  • Clang 是 Open source 的 compiler,並使用 Apache License 2.0 授權,不用看 M$ 臉色
  • 其他還有一些高大上的理由但我們普通人感覺不到

我該怎麼換?

官方支援後變得超級簡單! 不用自己想辦法去搞 MINGW + LLVM 了

但不知道為什麼 edkclang 放在哪沒有放在很明顯的地方,大家可以去下面這個連結下載

https://github.com/tianocore/edk2-edkrepo/releases/download/edkclang-v20.1.5/EdkClangSetup-20.1.5.0.exe

安裝方式很簡單,就是一直下一步就好

資訊

這邊要注意的是,安裝程式會幫你設定一個系統環境變數 BASETOOLS_MINGW_PATH,這個需要指向安裝的 clang compiler

預設安裝在 c:\edk2-clang,如果想換位置要一併更動這個變數

這樣就安裝好了

最後來個範例看看怎麼用

建置 BaseTools

1
2
3
REM Don't need to set BASETOOLS_MINGW_PATH environment BASETOOLS_MINGW_PATH by yourself if you don't change the default
REM set BASETOOLS_MINGW_PATH=C:\edk2-clang
edksetup.bat Mingw-w64 ForceRebuild

來建置個 Shell 試試

1
2
3
4
REM Don't need to set BASETOOLS_MINGW_PATH environment BASETOOLS_MINGW_PATH by yourself if you don't change the default
REM set BASETOOLS_MINGW_PATH=C:\edk2-clang
edksetup.bat Mingw-w64
build -a X64 -t CLANGPDB -p ShellPkg/ShellPkg.dsc -b RELEASE

大家學廢了嗎?

參考