☰
MinGW for Win64 安装配置全指南:从零搭建 C++ 编译环境
2026/10/20 13:36:06 网站建设 项目流程

简介:MinGW for Win64 是面向 Windows 64 位平台的 GCC 编译器工具链资源,适合在本地学习 C++、希望摆脱大型 IDE 依赖的开发者与编程初学者。它提供 GCC、libstdc++、Binutils、Make 及配套头文件与库,支持 C++11/14/17 标准及部分 C++20 特性,可命令行快速编译调试,资源占用小、启动快,编译产物跨平台兼容性较好。压缩包为 zip 格式,大小约 156.05MB,文件总数与类型明细上游暂未提供,从描述看应包含 TDM-GCC-64 工具链的可执行文件、头文件与静态动态库等核心组件。目前已有 115 人学习下载,适合想理解编译流程、搭建轻量级 C++ 开发环境的读者参考使用。

1. MinGW for Win64 安装环境搭建:从零跑通第一个 C++ 程序

很多人第一次在 Windows 上写 C++,卡住的不是语法,而是连g++都敲不出来。MinGW for Win64 就是解决这个问题的:它把 GCC 工具链搬到 Windows 64 位环境,让你不装 Visual Studio 也能编译 C++。听起来简单,但版本选错、路径带空格、环境变量顺序不对,都会让g++ --version直接报“不是内部或外部命令”。我见过太多人在这卡一下午,最后放弃转去装几个 G 的 IDE。这篇记录的是我反复装过多次、能稳定跑通的一套流程,适合刚接触 C++ 的新手,也适合想换轻量工具链的老手。

2. 下载与版本选择:MinGW for Win64 到底该拿哪个包

2.1 先分清 MinGW-w64 和旧版 MinGW

网上搜“MinGW 下载”,出来的结果很杂。这里要分清两个东西:老 MinGW 项目早就停止更新,只支持 32 位,很多新库根本编不过;现在实际用的是 MinGW-w64,它同时支持 32 位和 64 位,维护活跃。你装的时候认准 MinGW-w64 这个名字,别下成旧版。常见做法是去 SourceForge 上的 MinGW-w64 页面,或者用 MSYS2 来管理。我一般直接下独立压缩包,解压就能用,不写注册表,卸载就是删文件夹,干净。

2.2 三个关键参数:架构、线程模型、异常模型

下载页会让你选几个参数,选错不一定立刻报错,但后面链接第三方库时会出玄学问题。对照下面这张表选:

参数推荐值说明
架构x86_6464 位系统就选这个
线程模型posix用 std::thread 必须选 posix,win32 不支持 C++11 线程
异常模型seh64 位下 seh 性能好,且能配合 posix 线程
版本最新稳定版别追太新的构建,选发布有一段时间的

线程模型这里踩过坑:早期我选了 win32,结果一用std::thread就编译报错,换成 posix 才过。异常模型在 64 位下基本无脑 seh,sjlj 是给 32 位兜底的。

2.3 下载与解压路径的讲究

下载下来通常是个.7z或.zip,解压到哪很重要。我一般放C:\mingw64,路径短、无空格、无中文。千万别解压到“桌面”或者“Program Files”,前者路径里有中文用户名,后者有空格,后面配环境变量和 Makefile 时全是坑。解压完目录结构应该是C:\mingw64\bin、C:\mingw64\lib、C:\mingw64\include这样。如果解压出来多套了一层文件夹,把里层内容挪到C:\mingw64下,保证bin直接可见。

# 解压后确认目录结构,Windows 下用 dir 或资源管理器看 C:\mingw64\bin\g++.exe C:\mingw64\bin\gcc.exe C:\mingw64\bin\mingw32-make.exe

这三个文件在,说明包没下错。g++编 C++,gcc编 C,mingw32-make是 make 的 Windows 版,名字虽然带 32 但 64 位也能用。

3. 配置环境变量:让 g++ 在任何目录都能敲出来

3.1 把 bin 目录加进 PATH

解压完直接开 CMD 敲g++是没反应的,因为系统不知道去哪找。要把C:\mingw64\bin加到 PATH 里。步骤:此电脑右键 → 属性 → 高级系统设置 → 环境变量 → 在“系统变量”里找到 Path → 编辑 → 新建 → 填C:\mingw64\bin→ 一路确定。注意是加到“系统变量”的 Path,不是“用户变量”,否则换个账户又没了。加完必须重开 CMD,旧窗口读的是旧环境。

# 重开 CMD 后验证 g++ --version # 正常输出类似: # g++ (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0

版本号后面的x86_64-posix-seh正好对应你下载时选的参数,对上了就说明装对了。

3.2 PATH 顺序引发的版本冲突

如果你电脑里之前装过别的编译器,比如 Dev-C++ 自带的旧 GCC,或者 Anaconda 里的gcc,PATH 里可能有好几个g++。系统按 PATH 顺序找,先找到哪个用哪个。我遇到过敲g++ --version出来是 4.9 的老版本,查半天才发现 Anaconda 的路径排在前面。解决办法:把C:\mingw64\bin上移到最前面,或者把冲突的路径删掉。用where g++能看到所有命中的路径,排查时很有用。

where g++ # 输出可能有多行,第一行才是实际生效的 C:\mingw64\bin\g++.exe C:\Users\xxx\Anaconda3\Library\mingw-w64\bin\g++.exe

3.3 验证环境变量是否真的生效

配完别急着写代码,先做三步验证:g++ --version看版本,gcc --version看 C 编译器,mingw32-make --version看 make。三个都出东西,环境才算通。如果g++有反应但mingw32-make没有,说明 bin 目录没加全,或者 make 文件名不对——有些包叫make.exe而不是mingw32-make.exe,去 bin 目录里看一眼实际叫什么。

提示:改完环境变量一定要新开终端窗口,在旧窗口里怎么试都是旧配置,这个坑我踩过不止一次。

4. 编译第一个程序:从源码到可执行文件的完整链路

4.1 写一个最小 C++ 文件

找个干净目录,比如D:\cpptest,新建hello.cpp。内容别贪多,先跑通再说:

// hello.cpp #include <iostream> int main() { std::cout << "MinGW for Win64 works!" << std::endl; return 0; }

#include <iostream>是标准输入输出头,std::cout往控制台打东西。这段代码不依赖任何第三方库,能编过就说明工具链基本正常。

4.2 用 g++ 编译并运行

在D:\cpptest下开 CMD,敲:

g++ hello.cpp -o hello.exe # 没报错就生成了 hello.exe hello.exe # 输出:MinGW for Win64 works!

-o hello.exe指定输出文件名,不写的话 Windows 下默认生成a.exe。编译过程分四步:预处理、编译、汇编、链接,g++一条命令全干了。如果报iostream: No such file or directory,说明 include 路径没配好,多半是包下错了或者解压不完整。

4.3 加上编译参数看细节

实际项目里不会只敲g++ hello.cpp,常用参数得知道几个:

g++ hello.cpp -o hello.exe -std=c++17 -Wall -O2 -g
  • -std=c++17:指定 C++ 标准,不写的话老版本 GCC 默认可能是 C++14 甚至更早
  • -Wall:打开常用警告,能提前发现隐患
  • -O2:开二级优化,发布时用
  • -g:保留调试信息,配合 gdb 用

这几个参数组合是我日常编译的默认起手式。-std一定要显式写,不同 GCC 版本默认标准不一样,换台机器就可能编不过。

4.4 多文件编译与 make 的引入

单文件直接g++没问题,文件一多就得用 make。MinGW 自带的是mingw32-make,写个最简单的 Makefile:

# Makefile CXX = g++ CXXFLAGS = -std=c++17 -Wall -O2 TARGET = app.exe OBJS = main.o util.o $(TARGET): $(OBJS) $(CXX) $(OBJS) -o $(TARGET) %.o: %.cpp $(CXX) $(CXXFLAGS) -c $< -o $@ clean: del $(OBJS) $(TARGET)

注意 Makefile 里命令行前面必须是 Tab,不是空格,这是新手最常翻车的地方。mingw32-make执行时如果报missing separator,九成是 Tab 变成了空格。运行mingw32-make就能按规则编译,mingw32-make clean清理产物。

5. 避坑与排查:MinGW for Win64 装完常见的五个翻车现场

5.1 现象:g++ 不是内部或外部命令

原因:PATH 没配,或者配了没重开终端,或者加到了用户变量但当前用的是另一个账户。解决:where g++看有没有命中,没有就回去检查 PATH;有命中但版本不对,调整 PATH 顺序。我一般把C:\mingw64\bin放 PATH 最前面,避免被其他工具链截胡。

5.2 现象:编译报 undefined reference tostd::thread::...

原因:下载时线程模型选了 win32,win32 模型不支持 C++11 线程。解决:换 posix 线程模型的包重新解压。这个错误不会在编译阶段出现,而是链接阶段才报,很多人以为是代码问题,其实是包选错了。判断方法:g++ -v看输出里的Thread model字段。

5.3 现象:中文输出乱码

原因:Windows 控制台默认 GBK 编码,源码文件如果是 UTF-8,输出中文就乱。解决:要么源码存成 GBK,要么在程序里用SetConsoleOutputCP(65001)切 UTF-8,要么编译时加-fexec-charset=GBK。我一般统一源码 UTF-8,程序开头加一行切码页,跨平台也省心。

5.4 现象:mingw32-make 报 missing separator

原因:Makefile 里命令行缩进用了空格而不是 Tab。解决:编辑器里把 Tab 显示出来,确保每条命令前是真正的 Tab。VS Code 右下角可以切缩进类型,改成 Tab 再存。这个坑几乎每个写 Makefile 的人都踩过。

5.5 现象:链接第三方库时报 cannot find -lxxx

原因:库文件不在默认搜索路径,或者库名写错。解决:用-L指定库目录,-I指定头文件目录。比如链接一个放在D:\libs的库:g++ main.cpp -ID:\libs\include -LD:\libs\lib -lmylib -o app.exe。注意-l后面跟的是库名去掉lib前缀和.a/.dll后缀的部分。

6. 装完怎么验证:一套可复现的检查清单

装完别急着写业务代码,先按下面这套流程走一遍,全过才算环境真的稳。这套检查我每次换机器都跑,能提前暴露九成配置问题。

第一步,开新 CMD,依次敲:

g++ --version gcc --version mingw32-make --version where g++

四条命令都要有正常输出,where g++的第一行必须是C:\mingw64\bin\g++.exe。如果版本号里的线程模型不是 posix,后面用线程会出问题,趁早换包。

第二步,编译一个带线程和 STL 的测试程序,验证工具链完整性:

// test_env.cpp #include <iostream> #include <thread> #include <vector> #include <algorithm> int main() { std::vector<int> v = {3, 1, 4, 1, 5}; std::sort(v.begin(), v.end()); std::thread t([&]{ for (int n : v) std::cout << n << " "; }); t.join(); std::cout << "\nthread + stl ok" << std::endl; return 0; }

编译命令:

g++ test_env.cpp -o test_env.exe -std=c++17 -Wall -pthread test_env.exe

-pthread在 MinGW 下有时可省,但显式加上更保险。能输出排序结果和thread + stl ok,说明线程模型、STL、链接都没问题。

第三步,用 make 走一遍多文件构建,确认mingw32-make和 Makefile 配合正常。随便建两个 cpp 加一个头文件,写个 Makefile,跑mingw32-make和mingw32-make clean,看产物生成和清理是否都正常。

第四步,检查 gdb 能不能用。MinGW 包里通常带gdb.exe,敲gdb --version看有没有。有的话编译时加-g,然后gdb test_env.exe进去run一下,能跑起来就说明调试链路通。

检查项命令通过标准
编译器g++ --version版本号含 x86_64-posix-seh
C 编译器gcc --version同上
makemingw32-make --version有版本输出
路径where g++第一行指向 C:\mingw64\bin
线程编译 test_env.cpp运行输出 thread + stl ok
调试gdb --version有版本输出

这套清单跑完,基本能确定环境是干净的。从那以后我每次装完 MinGW for Win64,都强制走一遍这四步,不再凭感觉“应该能用了”。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询