MSYS2 通常安裝在 C:\msys64,那編譯器位置就根據你安裝的 toolchain(如 mingw64、ucrt64、clang64) 而定。
🎯 常見 MSYS2 編譯器路徑對照表
✅ 如果你使用的是 MinGW-w64 (64-bit GCC):
Toolchain | 編譯器 binary 路徑 | 常用變數名 |
---|---|---|
mingw64 | C:\msys64\mingw64\bin\gcc.exe | x86_64-w64-mingw32-gcc |
ucrt64 | C:\msys64\ucrt64\bin\gcc.exe | (有時改成 ucrt gcc) |
clang64 | C:\msys64\clang64\bin\clang.exe | clang for Windows |
msys2 (純 POSIX) | C:\msys64\usr\bin\gcc.exe (不建議用來編 Win binary) | 只適合 MSYS shell 程式 |
🧭 如何確認你用的是哪個 toolchain?
打開 MSYS2 shell(通常是這些其中之一):
-
MSYS2 MinGW 64-bit
(對應mingw64
) -
MSYS2 UCRT64
(對應ucrt64
) -
MSYS2 CLANG64
-
MSYS2 MSYS
(純 POSIX,較不推薦編 Windows EXE)
然後在 shell 輸入:
範例輸出(你用哪個 shell 就會指到哪):
✅ 編譯器對應的「CC」名稱
路徑 | Makefile 用法 |
---|---|
/mingw64/bin/gcc | CC=x86_64-w64-mingw32-gcc |
/ucrt64/bin/gcc | CC=x86_64-w64-mingw32-gcc (或指定 ucrt 變種) |
/clang64/bin/clang | CC=clang ,可能加 -target |
/usr/bin/gcc | ⚠️ 不建議用來產出 .exe |
📦 你可以這樣設定你的 build.sh
:
或直接修改你的 Makefile:
💡 額外建議:用 pacman
裝工具鏈(MSYS2 專用)
裝好後你就能在 MSYS2 MinGW 64-bit
shell 中愉快使用 x86_64-w64-mingw32-gcc
😎
自動判斷當前 shell 和工具鏈的 build.sh
根據你現在是在 哪個 MSYS2 shell 自動選擇合適的 toolchain 編譯器,例如:
-
如果你在
MSYS2 MinGW 64-bit
shell → 使用mingw64
工具鏈 -
如果你在
MSYS2 UCRT64
shell → 使用ucrt64
-
如果你在 Linux shell → 使用系統 gcc
-
如果是 MSYS2 環境但沒指定 toolchain → 提示你不要用
MSYS
直接編譯 Windows 程式
✅ 終極版本 build.sh
– 自動偵測平台 & toolchain
🧪 使用方式
編譯 Linux 程式(例如 Ubuntu)
編譯 Windows 程式(用 MSYS2 開啟 MSYS2 MinGW 64-bit
shell)
🔍 判斷 MSYSTEM
變數的用意?
MSYS2 Shell | MSYSTEM 值 |
---|---|
MSYS2 MinGW 64-bit | MINGW64 |
MSYS2 UCRT64 | UCRT64 |
MSYS2 CLANG64 | CLANG64 |
MSYS2(純 POSIX) | MSYS |
🔒 Bonus 安全性:
-
自動提示你「不要在 MSYS shell 下編譯 .exe」
-
編譯器會自動根據 shell 推定
-
支援 Linux 全自動
沒有留言:
張貼留言