記錄 Windows 下 MinGW/MSYS 環境配置關鍵步驟,以及針對 onscripter-en 專案的交叉編譯參數調優,解決 _wfopen、off64_t 未定義等常見錯誤。
fstab 掛載 MinGW 目錄# C:\MinGW\msys\1.0\etc\fstab
# 複製 fstab.sample 內容後新增:
C:/MinGW/mingw
profile 環境變數設定# C:\MinGW\msys\1.0\etc\profile
# 在原有 PATH 邏輯前插入:
PATH=
INCLUDE=
LIB=
if [ $MSYSTEM == MINGW32 ]; then
export PATH=".:/usr/local/bin:/mingw/bin:/bin:$PATH"
else
export PATH=".:/usr/local/bin:/bin:/mingw/bin:$PATH"
fi
SDLOTHERCONFIG=--disable-assembly ./configure \
--std=gnu++98 --no-werror --with-internal-libs \
&& make VERBOSE=true CSTD=-std=gnu99
--std=gnu++98 | 啟用 GNU C++98 擴充(關閉 __STRICT_ANSI__),解決 _wfopen、off64_t 未定義 |
| -std=gnu99 | 同理對 C 程式碼啟用 GNU C99 擴充 |
| --disable-assembly | 禁用手寫組語優化,提升相容性 |
| --with-internal-libs | 使用內建庫避免外部依賴衝突 |
| --no-werror | 降級警告為非錯誤,避免編譯中斷 |
| 錯誤訊息 | 原因 | 解決 |
|---|---|---|
_wfopen undefined | 嚴格 ANSI 模式隱藏 MS 專用函數 | 改用 gnu++98/gnu99 |
off64_t undefined | 大檔案支援需 _LARGEFILE_SOURCE | 同上,GNU 模式自動開啟 |
| 連結找不到庫 | 路徑順序錯誤 | 調整 LIB/PATH 優先序 |
# 確認執行檔產生
ls -l onscripter-en.exe
# 執行測試
./onscripter-en --version
fstab 與 profile 是 MinGW 命令列工具鏈正常運作的基石。gnu++98/gnu99)是解決 Windows 平台 POSIX 函數缺失的關鍵開關。build.sh)可避免手動參數遺漏,利於 CI/CD 整合。