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-bitshell → 使用mingw64工具鏈 -
如果你在
MSYS2 UCRT64shell → 使用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 全自動
沒有留言:
張貼留言