简介这份资源是面向 Windows 10 64 位系统的 MinGW 安装包版本 V14.12.0适合需要在 Windows 上搭建类 Unix 开发环境、使用 GCC 编译链进行 C/C 开发的初学者与进阶开发者。它解决的是在 Windows 平台编译类 Unix 软件、调用 GCC 工具链的问题可作为日常开发与调试的稳定编译环境。压缩包为 7z 格式共约 2000 个文件整体约 79.98MB其中以 918 个 h 头文件、808 个 py 脚本、243 个 hpp 头文件为主另含少量 txt、sh、c、md、js、html、css 等覆盖编译器头文件、脚本与基础库文件。目前已有 365 人学习下载。借助该安装包读者可获得完整的 GCC 编译链组件配合环境变量配置即可在命令行中调用编译器并参考作者在 CSDN 博客中的安装配置教程规避组件选择、路径设置与权限问题快速完成开发环境搭建。1. 为什么 Win10 64 位下 MinGW 14.12.0 值得单独装一遍如果你在 Windows 10 64 位上写 C/C大概率绕不开一个选择MSVC 还是 MinGW。Visual Studio 那套东西装完动辄十几 GB而 MinGW 解压即用、体积小、命令行友好配合 VS Code 或 CMake 能快速跑起来。标题里的 MinGW 14.12.0指的是 GCC 14 系列的一个发行版本专门面向 Windows 10 64 位环境。它解决的核心问题是让你在 Windows 上拥有一个接近 Linux 的 GCC 编译体验同时生成原生 64 位可执行文件。这篇文章面向三类人刚接触 C/C 想搭环境的新手、从 Dev-C 或老版 MinGW 迁移过来的开发者、以及需要在 Win10 上做跨平台构建的工程师。我会把安装包怎么选、怎么装、环境变量怎么配、和 MSVC 的区别在哪、CMake 怎么对接一步步讲清楚。不绕弯子直接上可复现的操作。2. MinGW 14.12.0 安装包怎么选别下错架构和线程模型2.1 先搞清楚 MinGW 和 MinGW-w64 的关系很多人搜「MinGW 安装包」的时候会看到两个名字MinGW 和 MinGW-w64。简单说最早的 MinGW 项目只支持 32 位后来社区分出了 MinGW-w64同时支持 32 位和 64 位并且一直在维护。现在你在 Windows 10 64 位上要用的实际上就是 MinGW-w64。标题里说的「适合 Win10 64 位的 MinGW 安装包」本质就是 MinGW-w64 的某个发行版。那为什么还叫 MinGW因为很多发行方比如 MSYS2、WinLibs、TDM-GCC在命名上仍然沿用 MinGW 这个叫法用户搜索习惯也没变。你只要记住一点确认它支持 x86_64 架构就行。常见的发行渠道有这么几个发行方特点适合谁MSYS2包管理器式安装更新方便需要长期维护环境的WinLibs独立压缩包解压即用想快速上手、不想折腾的TDM-GCC一键安装器习惯图形化安装的MSYS2 里的 mingw-w64-x86_64-gcc通过 pacman 安装已经在用 MSYS2 的我一般推荐 WinLibs 的独立包或者 MSYS2前者最省事后者最灵活。2.2 架构、线程模型、异常模型这三个参数必须对上下载的时候你会看到一长串文件名比如x86_64-14.12.0-release-posix-seh-ucrt-rt_v12-rev0.7z。这一串不是随便起的每个字段都有含义x86_64目标架构64 位。Win10 64 位必须选这个选 i686 就是 32 位。14.12.0GCC 版本号。posix / win32线程模型。posix 支持 C11 的 std::thread、std::mutex 等win32 不支持。如果你写多线程代码必须选 posix。seh / sjlj / dwarf异常处理模型。64 位下选 seh性能最好sjlj 是兼容性兜底慢一些。ucrt / msvcrtC 运行时库。ucrt 是 Windows 10 通用运行时msvcrt 是老版。Win10 上优先选 ucrt。所以一个正确的文件名应该长这样x86_64-14.12.0-release-posix-seh-ucrt-rt_v12-rev0.7z。如果你看到 i686 开头那是 32 位的别下。如果线程模型是 win32多线程代码会编译失败。注意posix 线程模型和 win32 线程模型生成的库不兼容如果你要链接第三方预编译库必须确认对方的线程模型和你一致。2.3 下载和解压的具体操作假设你从 WinLibs 拿到了 7z 压缩包操作步骤如下# 第一步解压到指定目录路径不要有空格和中文 # 假设解压到 D:\mingw64 # 解压后目录结构应该是 # D:\mingw64\bin\gcc.exe # D:\mingw64\bin\g.exe # D:\mingw64\include\ # D:\mingw64\lib\ # 第二步验证解压是否完整 ls D:/mingw64/bin/gcc.exe ls D:/mingw64/bin/g.exe解压路径强烈建议不要放在C:\Program Files下面因为空格会导致某些构建脚本解析失败。用D:\mingw64或者C:\mingw64这种短路径最稳妥。2.4 配置环境变量 PATH解压完还不算装好必须把bin目录加到系统 PATH 里否则命令行找不到 gcc。操作路径此电脑 → 右键属性 → 高级系统设置 → 环境变量 → 系统变量里的 Path → 编辑 → 新建 → 填入D:\mingw64\bin→ 确定。# 配置完后打开一个新的命令行窗口必须新开执行 gcc --version # 期望输出类似 # gcc (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 14.12.0 # Copyright (C) 2024 Free Software Foundation, Inc. g --version # 同样应该输出 14.12.0如果提示gcc 不是内部或外部命令说明 PATH 没生效。先确认你新开了命令行窗口再确认路径拼写没有错。有时候系统里存在多个 MinGWPATH 顺序会导致调用了旧版本用where gcc可以查看实际调用的是哪一个。3. 用 MinGW 14.12.0 编译第一个程序从单文件到 CMake 工程3.1 单文件编译验证工具链是否正常装好之后第一件事就是编译一个 Hello World确认整条链路通畅。// hello.c #include stdio.h int main(void) { printf(MinGW 14.12.0 on Win10 64-bit\n); return 0; }# 编译 gcc hello.c -o hello.exe # 运行 ./hello.exe # 输出MinGW 14.12.0 on Win10 64-bit这里-o hello.exe指定输出文件名。如果不加-ogcc 默认生成a.exe。编译 C 代码就用g用法一样。再验证一下 C 和多线程支持// thread_test.cpp #include iostream #include thread #include mutex std::mutex mtx; void worker(int id) { std::lock_guardstd::mutex lock(mtx); std::cout thread id running\n; } int main() { std::thread t1(worker, 1); std::thread t2(worker, 2); t1.join(); t2.join(); std::cout main done\n; return 0; }g -stdc17 thread_test.cpp -o thread_test.exe ./thread_test.exe如果编译报错说std::thread找不到说明你下载的是 win32 线程模型的版本需要换成 posix 版本。这就是前面强调线程模型的原因。3.2 多文件工程的编译和链接实际项目不会只有一个文件。假设你有三个文件// math_utils.h #ifndef MATH_UTILS_H #define MATH_UTILS_H int add(int a, int b); int multiply(int a, int b); #endif// math_utils.c #include math_utils.h int add(int a, int b) { return a b; } int multiply(int a, int b) { return a * b; }// main.c #include stdio.h #include math_utils.h int main(void) { printf(add: %d\n, add(3, 4)); printf(multiply: %d\n, multiply(3, 4)); return 0; }# 分步编译 gcc -c math_utils.c -o math_utils.o gcc -c main.c -o main.o gcc math_utils.o main.o -o app.exe # 或者一步到位 gcc math_utils.c main.c -o app.exe-c表示只编译不链接生成.o目标文件。分步编译的好处是改一个文件只需要重新编译那一个大项目里能省很多时间。3.3 用 CMake 对接 MinGW 14.12.0现在稍微正经一点的项目都用 CMake 管理构建。MinGW 和 CMake 配合需要指定生成器为MinGW Makefiles。# CMakeLists.txt cmake_minimum_required(VERSION 3.20) project(MyApp C CXX) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) add_executable(myapp main.c math_utils.c) target_include_directories(myapp PRIVATE ${CMAKE_SOURCE_DIR})# 在项目根目录下执行 mkdir build cd build # 关键指定生成器为 MinGW Makefiles cmake -G MinGW Makefiles .. # 构建 mingw32-make # 运行 ./myapp.exe这里有几个容易翻车的点。第一-G MinGW Makefiles必须写对大小写和空格都不能错。第二mingw32-make是 MinGW 自带的 make 工具不要和 MSYS2 的make混用。第三如果你的 PATH 里同时有 MSVC 和 MinGWCMake 可能自动选了 MSVC所以显式指定生成器很重要。提示如果 CMake 报错说找不到编译器检查gcc和g是否在 PATH 里用cmake -G MinGW Makefiles -DCMAKE_C_COMPILERgcc -DCMAKE_CXX_COMPILERg ..显式指定。3.4 和 MSVC 的区别什么时候该用哪个这是搜索热词里高频出现的问题。简单对比一下维度MinGW 14.12.0MSVC安装体积几百 MB几 GB命令行体验接近 Linux需要开发者命令行标准兼容性GCC 14 很新取决于 VS 版本调试器GDBVisual Studio Debugger第三方库兼容需要 MinGW 编译的库大量预编译库生成代码性能好在 Windows 上略优跨平台代码可移植到 Linux主要 Windows我的建议是如果你写的是跨平台代码、习惯命令行、不想装几个 GB 的 IDE用 MinGW。如果你要做 Windows 桌面开发、用 MFC 或 DirectX、依赖大量 Windows 专属库用 MSVC。两个也可以共存通过 CMake 的生成器切换。4. MinGW 14.12.0 常见踩坑记录从 PATH 冲突到链接失败4.1 坑一系统里有多个 MinGW调用了旧版本现象gcc --version显示的是 8.1.0 或者更老的版本明明装了 14.12.0。原因PATH 里存在多个 MinGW 的 bin 目录系统优先找到了排在前面的旧版本。常见于之前装过 Dev-C、Code::Blocks 或者 Qt 自带 MinGW 的情况。解决用where gcc查看所有 gcc 路径把不需要的从 PATH 里删掉或者把 14.12.0 的路径移到最前面。改完必须新开命令行窗口。where gcc # 输出可能类似 # C:\Dev-Cpp\MinGW64\bin\gcc.exe # D:\mingw64\bin\gcc.exe # 说明旧版本排在前面需要调整 PATH 顺序4.2 坑二编译时报 undefined reference to__imp_xxx现象链接阶段报错提示某个 Windows API 函数未定义比如__imp_CreateFileW。原因缺少对应的系统库。MinGW 不会自动链接所有 Windows 库需要手动加-l参数。解决根据缺失的函数判断需要哪个库。常见对应关系# 缺少 kernel32 相关函数 gcc main.c -o app.exe -lkernel32 # 缺少 user32 相关函数MessageBox 等 gcc main.c -o app.exe -luser32 # 缺少 gdi32 相关函数 gcc main.c -o app.exe -lgdi32 # 缺少 ws2_32 相关函数socket 编程 gcc main.c -o app.exe -lws2_32 # 多个库一起加 gcc main.c -o app.exe -lkernel32 -luser32 -lgdi32 -lws2_324.3 坑三中文路径导致编译失败现象项目放在桌面或者「我的文档」下编译时报错说找不到文件或者生成的 exe 无法运行。原因MinGW 的部分工具对中文路径支持不好尤其是路径里有空格和中文混合的时候。解决把项目移到纯英文、无空格的路径下比如D:\projects\myapp。这是血泪经验很多人在这上面浪费几个小时。4.4 坑四CMake 缓存了错误的编译器现象第一次用 MSVC 配置了 CMake后来想换成 MinGW重新执行cmake -G MinGW Makefiles ..报错说生成器不匹配。原因build目录下的CMakeCache.txt记录了上次的编译器信息。解决删掉整个build目录重新来。rm -rf build mkdir build cd build cmake -G MinGW Makefiles .. mingw32-make4.5 坑五std::filesystem 链接失败现象使用#include filesystem时链接报错提示std::filesystem相关符号未定义。原因GCC 9 之前需要额外链接-lstdcfsGCC 9 之后已经合并到标准库。但某些配置下仍然需要显式指定。解决# GCC 14 一般不需要但如果报错就加上 g -stdc17 main.cpp -o app.exe -lstdcfs如果加了还不行检查是否用了-stdc17或更高标准。std::filesystem是 C17 引入的用 C14 编译肯定找不到。5. 让 MinGW 14.12.0 更好用静态链接、调试和版本管理5.1 静态链接生成独立 exe默认情况下 MinGW 动态链接libgcc和libstdc生成的 exe 换台电脑可能跑不起来。加两个参数就能静态链接g main.cpp -o app.exe -static -static-libgcc -static-libstdc-static-libgcc静态链接 GCC 运行时-static-libstdc静态链接 C 标准库。加上-static更彻底把所有能静态的都静态进去。代价是 exe 体积会大一些但换来的是拷贝到任何 Win10 64 位机器上都能直接运行。注意如果用了 posix 线程模型静态链接后 exe 会更大但兼容性没问题。如果链接了第三方动态库那些库仍然需要一起分发。5.2 用 GDB 调试MinGW 自带 GDB编译时加-g生成调试信息gcc -g main.c -o app.exe gdb app.exe进入 GDB 后的常用命令# 设置断点 break main # 运行 run # 单步执行 next # 进入函数 step # 打印变量 print variable_name # 查看调用栈 backtrace # 退出 quit如果你用 VS Code装 C/C 扩展后在.vscode/launch.json里配置miDebuggerPath: D:\\mingw64\\bin\\gdb.exe就能图形化调试。5.3 多版本共存的管理方式有时候你需要在 GCC 14 和 GCC 12 之间切换。最干净的做法是每个版本解压到不同目录然后写两个批处理脚本切换 PATH# switch_to_gcc14.bat echo off set PATHD:\mingw64-14.12.0\bin;%PATH% echo Switched to GCC 14.12.0 gcc --version# switch_to_gcc12.bat echo off set PATHD:\mingw64-12.2.0\bin;%PATH% echo Switched to GCC 12.2.0 gcc --version这样在命令行里执行对应的 bat 就能切换不影响系统全局 PATH。对于需要频繁切换的场景这比改系统环境变量方便得多。5.4 验证安装是否完整的检查清单最后给一个快速自检的清单装完后逐条过一遍# 1. 检查版本 gcc --version g --version gdb --version # 2. 检查目标架构 gcc -dumpmachine # 期望输出x86_64-w64-mingw32 # 3. 检查线程模型 gcc -v 21 | findstr Thread model # 期望输出Thread model: posix # 4. 编译并运行测试程序 echo int main(){return 0;} test.c gcc test.c -o test.exe ./test.exe echo OK # 5. 检查 CMake 能否识别 cmake -G MinGW Makefiles --version这五步都过了说明你的 MinGW 14.12.0 在 Win10 64 位下已经可以正常工作了。后面遇到问题优先回头检查这几点大部分玄学问题都出在 PATH、线程模型和路径中文上。希望帮到你。本文还有配套的精品资源点击获取