论Windows如何下载Mingw高版本
::::info{open} 本文使用豆包AI润色。 ::::
前言
这次应该不会再这样了吧......
你有没有遇到过这种情况:在洛谷上用 C++ 17的新特性写的代码在洛谷上传奇
下载Winlibs Mingw 编译器
首先打开这个网站Winlibs,往下翻你会发现类似于以下图片的下载的区域。
- posix 必选 洛谷/CCF 评测机都使用 posix 线程模型。如果选 win32 ,
std::thread等 C++ 11 多线程特性编译失败,而且可能导致本地与评测机行为不一致。 - UCRT 必选 兼容新版 Windows 运行库,兼容性好。
- without LLVM 纯 GCC 体积更小适合仅刷题用户。
- 格式需求 尽量选
.zip的文件,因为部分电脑无法解压.7z的文件。 - 系统位数判断 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语法了。
补充:竞赛推荐编译选项
-std=c++23学习新特性用,使用 C++ 23 标准。-std=c++17竞赛统一 C++ 17 标准,不能与上面的-std=c++23连用。-O2开启 O2 优化,使 STL 容器速度更快(不会还有人不知道 STL 吧),竞赛必开。-DLOCAL定义本地宏,方便写freopen调试。-static静态链接dll库,仅在你需要将编译好的程序在没有 C++ 环境的电脑上运行时加入。测试
使用新的编译器编译以下代码,如果能够成功运行,那么说明已经配置成功了:
#include <vector> #include <iostream>
// 特性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`,如果是请重新打开这一个窗口再复制,需要在同一个文件夹)。

::::

## 测试
按下`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++ 后爆出下面错误:

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` 文件夹存放处。
::::

- Q:为什么我解压出来找不到 `mingw64`文件夹
A:如果你使用 $32$ 位系统的话,那么你应该找 `mingw32` 文件夹,而不是 `mingw64`文件夹。