MinGW的官网中下载对应版本的文件
可以选择在线安装或者直接将包下载解压。
一般Windows下选择上面的选项即可,参数说明如下所示:
①电脑的处理器架构Architecture
Architecture 是指电脑处理器是 32位 还是 64位,根据你的电脑系统做出对应选择。我的电脑处理器是 64位 的,所以我选择了 x86_64,如果你是 32位 系统,则选择 i686 即可。注意,下面是可以选择的Architecture类型:
- i386 通常被用来作为对Intel(英特尔)32位微处理器的统称;
- i686 是i386的子集,也是针对32位的处理器
- x86-64 又称“AMD64”或“x64”,是一种64位元的电脑处理器架构。它是建基于现有32位元的x86架构,由AMD公司所开发。
②操作系统接口协议threads
这个世界上只有两种操作系统接口协议,即所谓的posix和win32,如果你想要开发 Windows 程序,需要选择 win32 ,而开发 Linux、Unix、Mac OS 等其他操作系统下的程序,则需要选择 posix 。其实是什么意思呢?就是在这两个不同的协议之下,有很多函数接口是不一样的,比如在Linux上面的C程序不能直接拿到Windows上面运行,因为有一些函数库是不一样的。我只开发在 Windows 下运行的程序,所以选择了 win32 。但是依然更加推荐选择posix
- posix :启用C ++ 11 / C11多线程功能。 比如我们希望编译OpenCV,需要用到C++ 11的多线程里面的一些类,如果使用的是win32,就会报错,因为win32没有这些类。
- win32 :没有C ++ 11多线程功能。
如果要使用win32的 API,就不能使用POSIX呢?其实GCC带有一个编译器运行库(libgcc),它用于(除其他外)提供一个底层操作系统抽象,用于支持多语言相关功能。 最相关的例子是libstdc ++的C ++ 11 , 和 ,当使用内部的Win32线程模型构建GCC时,没有完整的实现。 MinGW-w64提供了一个winpthreads(在Win32多线程API之上的一个pthreads实现),然后GCC可以链接到所有的奇特功能
posix:可移植操作系统接口,是 IEEE 为要在各种 UNIX 操作系统上运行软件,而定义API的一系列互相关联的标准的总称,因此在实际中选择posix会更全面。
③异常处理模型Exception
异常处理在开发中非常重要,你在开发的过程中,大部分的时间会耗在处理各种异常情况上。又分为几种情况:
- x86_64 即64位处理器。如果你之前选择了 64位,则这里有两个异常处理模型供你选择,seh 是新发明的,而 sjlj 则是古老的,seh 性能比较好,但不支持 32位。 sjlj 稳定性好,支持 32位。我选择seh.
- i686 即32位处理器。选择了 32位 后,则可以用 dwarf 和 sjlj 两种异常处理模型。同样的,dwarf 的性能要优于 sjlj ,可以它不支持 64位 。建议选择 dwarf 。
总结:Mingw-w64的离线文件命名格式为“architecture+threads+exception"
可以自己修改路径,后续要根据这个安装路径配置环境。
安装完成之后配置环境:
①此电脑右键进入属性
②进入系统环境
将MinGW安装路径中的bin路径加入path环境中去:C:\Program Files\mingw-w64\x86_64-8.1.0-win32xxx\mingw64\bin
其中bin文件中各文件:
- gcc.exe
- g++.exe
- mingw32-make.exe,这个就相当于是Linux下面的make.exe。单个按我们也可以创建一个他的副本,重命名为make.exe.
- gdb.exe 用于调试的
- cpp.exe 是专门用于预处理的
- as.exe 是专门用于进行汇编的
- ld.exe 是专门进行链接的
在CMD中输入验证path环境是否配置成功
gcc -v
在VS Code中安装C++
新建一个文件夹用VS Code打开,并且在里面创建一个.cpp文件:
#include
using namespace std;
int main()
{
cout << "hello word" << endl;
return 0;
}
①配置编译器
在VS Code中按快捷键Ctrl+Shift+P调出命令面板,输入C/C++,选择“Edit Configurations(UI)”进入配置。这里配置两个选项: - 编译器路径:D:/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/g++.exe
这里的路径根据大家自己安装的Mingw编译器位置和配置的环境变量位置所决定。
IntelliSense 模式:gcc-x64
配置好之后在项目文件里面会多一个.vscode文件夹,并且里面有一个c_cpp_properties.json文件,内容如下,说明上述配置成功。
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "C:/Program Files/mingw-w64/x86_64-8.1.0-win32/mingw64/bin/g++.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
g++ .\helloword.cpp #生成a.exe文件
.\a.exe #执行编译文件
#输出helloword
接下来,创建一个tasks.json文件来告诉VS Code如何构建(编译)程序。该任务将调用g++编译器基于源代码创建可执行文件。 按快捷键Ctrl+Shift+P调出命令面板,输入tasks,选择“Tasks:Configure Default Build Task”:
再选择“C/C++: g++.exe build active file”:
此时会出现一个名为tasks.json的配置文件,内容如下:
{
"tasks": [
{
"type": "shell",
"label": "C/C++: g++.exe 生成活动文件",
"command": "C:/Program Files/mingw-w64/x86_64-8.1.0-win32/mingw64/bin/g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "C:/Program Files/mingw-w64/x86_64-8.1.0-win32/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
③配置调试设置
这里主要是为了在.vscode文件夹中产生一个launch.json文件,用来配置调试的相关信息。点击菜单栏的Debug–>Start Debugging:
在VS Code中执行:运行→启动调试→C++(GDB/LLDB)
紧接着会产生一个launch.json的文件:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "C:/Program Files/mingw-w64/x86_64-8.1.0-win32/mingw64/bin",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-win32\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe 生成活动文件"
}
]
}
现编写一个debug.cpp文件测试调试,设置断点后,按下F5进入调试,如图成功调试, 左侧为变量内容:
主要参考文章:
https://blog.csdn.net/qq_27825451/article/details/102531426
https://zhuanlan.zhihu.com/p/87864677