论Windows如何下载Mingw高版本

· · 科技·工程

::::info{open} 本文使用豆包AI润色。 ::::

前言

这次应该不会再这样了吧...... 你有没有遇到过这种情况:在洛谷上用 C++ 17的新特性写的代码在洛谷上\texttt{\color{#E74C3C}{WA}},想要在本地调试一下 结果自己的Dev-C++ 爆出传奇\texttt{\color{#FADB14}{CE}} 。 ::::warning[Tip]{open} 本教程适配 Windows 10+ ,适用于在洛谷刷题、 CCF 竞赛参赛选手,全程使用与洛谷/ CCF 评测机相同的 posix 编译器。 ::::

下载Winlibs Mingw 编译器

首先打开这个网站Winlibs,往下翻你会发现类似于以下图片的下载的区域。

  1. posix 必选 洛谷/CCF 评测机都使用 posix 线程模型。如果选 win32 ,std::thread 等 C++ 11 多线程特性编译失败,而且可能导致本地与评测机行为不一致。
  2. UCRT 必选 兼容新版 Windows 运行库,兼容性好。
  3. without LLVM 纯 GCC 体积更小适合仅刷题用户。
  4. 格式需求 尽量选.zip的文件,因为部分电脑无法解压.7z的文件。
  5. 系统位数判断 Windows 11+ 纯 64 位系统,无需判断;如果你是 Windows 10 用户,请下载这个文件 运行后就能知道是系统是什么位数。 示例推荐包(GCC 16.1.0 , 当前稳定竞赛版) : GCC 16.1.0 (with POSIX threads) + MinGW-w64 14.0.0 (UCRT) - release 3
    ::::info[Tip]{open} 如果一些用户下载的非常慢,可以复制下载链接后去Motrix下载。 ::::

    解压&本地校验

    解压

    ::::warning{open} 解压的路径 严禁包含中文、空格、特殊字符,只能包含字母、数字否则会出现一系列 Bug 。 推荐解压目录:D:\mingw64。 :::: 解压缩步骤:

    测试

    解压缩完成之后,打开mingw64文件夹,再打开bin文件夹,在地址栏输入cmd
    会打开一个黑窗口,在里面输入g++ --version,确保窗口的输出与图片中大致相同,只要不输出以下文字就可以。

    'g++' 不是内部或外部命令,也不是可运行的程序或批处理文件。

(因版本不同,输出也可能不同)。

如何配置Dev-C++

打开我们的Dev-C++,点击上方的“工具”,点“编译选项”,点右边的加号,打开选中我们刚才解压缩的文件夹,选中mingw64,不要选bin文件夹,然后在点旁边的小箭头重命名此编译器(非必须),再勾选“编译时加入以下命令”,在下面输入std=c++23,这样我们的编译器就支持C++23语法了。

补充:竞赛推荐编译选项

// 特性1:C++23 单参数 static_assert // GCC15及更早必须传第二个提示字符串,直接编译报错 static_assert(6 == 2 * 3);

// 特性2:C++23 允许 constexpr std::vector // GCC ≤15 不支持constexpr动态分配容器,直接CE constexpr std::vector<int> get_const_vec() { return {11, 22, 33}; }

int main() { auto vec = get_const_vec(); std::cout << vec[0] << " " << vec[1] << " " << vec[2] << "\n";

// 特性3:C++23 预处理指令 #elifdef
// GCC ≤15 无法识别该预处理关键字,预处理阶段直接报错

define DEMO_FLAG

ifdef DEMO_FLAG

std::cout << "C++23 编译器校验成功(GCC16+)\n";

elifdef OTHER_DEMO

std::cout << "OTHER_DEMO 已定义\n";

endif

return 0;

}


# 【可选】配置环境变量(Path)&测试
::::info[Tip]{open}
如果你使用 Dev-C++ 的话,那么你可以省略这一步。
::::
## 配置环境变量(Path)
与上一步一样,打开`cmd`,并输入命令:`cmd /k SystemPropertiesAdvanced`,会弹出一个叫「系统属性」的窗口,点环境变量,在第一栏里双击`Path`项,再点击「新建」,在里面粘贴你复制到的路径,之后在这三个窗口内都点击「确定」按钮。
::::info[如何获取路径]{open}
打开上一步的`bin`文件夹。  
点击地址栏后按下`Ctrl+C`即可(需要注意的是,你还要检查路径是不是`C:\Windows\System32\cmd`,如果是请重新打开这一个窗口再复制,需要在同一个文件夹)。  
![](https://cdn.luogu.com.cn/upload/image_hosting/stkik5jc.png)
:::: 
![](https://cdn.luogu.com.cn/upload/image_hosting/fit05gjy.png)
## 测试
按下`Win+R`键,输入`cmd`,回车,还是会打开一个黑窗口(不要使用以前的方法打开),再次输入`g++ --version`如果输出还与之前一样,那么就是配置成功了,否则就失败了,需要重新配置。
# FAQ
- Q:配置完还是爆出~~传奇~~$\texttt{\color{#FADB14}{CE}}$,找不到头文件?  
  A:大概率是路径选错了。添加编译器时要选 `mingw64` 文件夹,不是 `bin` 文件夹。另外需要确保路径中没有中文或空格。
- Q:环境变量配置了但是 `cmd` 窗口仍然找不到 `g++`  
  A:必须新开一个 `cmd` 窗口,旧窗口不会重新加载环境变量。
- Q:编译出来的 exe 换台电脑无法运行  
  A:程序默认是动态链接 `dll` 运行,在编译命令中加入 `-static` 静态编译就能独立运行。
- Q:配置完重启 Dev-C++ 后爆出下面错误:
 ![](https://cdn.luogu.com.cn/upload/image_hosting/1baiqo0l.png)  
 A:解决办法:先点 `No` ,之后还会有一个弹窗,把它关掉,进入 Dev-C++ 主界面,点上方的 “工具” 栏,点 “编译选项” ,单击 “目录”,把其所有子选项卡下的所有目录删除,再依次添加以下目录:

::::info{open}
二进制:`*\mingw64\bin`  
库:`*\mingw64\lib`  
C 包含文件:`*\mingw64\include`  
C++ 包含文件:`*\mingw64\include`  
其中 `*\` 表示你的 `mingw64` 文件夹存放处。    
如果你使用 $32$位系统,那么你的路径是:
二进制:`*\mingw32\x86_64-w64-mingw32\bin`  
库:`*\mingw32\x86_64-w64-mingw32\lib`  
C 包含文件:`*\mingw32\x86_64-w64-mingw32\include`  
C++ 包含文件:`*\mingw32\x86_64-w64-mingw32\include`  
其中 `*\` 表示你的 `mingw32` 文件夹存放处。  
::::  
![](https://cdn.luogu.com.cn/upload/image_hosting/mig42qo4.png)
- Q:为什么我解压出来找不到 `mingw64`文件夹  
 A:如果你使用 $32$ 位系统的话,那么你应该找 `mingw32` 文件夹,而不是 `mingw64`文件夹。