• MinGW-W64 下载、安装与配置(支持最新版的GCC,目前 GCC 13.2.0)VSCode配置c/c++环境 彻底删除vscode(包括插件及配置!)


    目录

    一、简介

    二、下载

    1  旧版安装(8.1.0) 

    从 sourceforge.net 下载

    2  新版安装(本次采用较新版本~~~)

    从 github 下载

    从 镜像站点 下载

     自己编译

    三、安装与配置

    1. 在线安装(这里仅作参考了解)

    2. 离线安装(这是本文安装的重点,也是本机安装的版本~~~)★★★

    1   下载MinGW-w64的安装包

    2   下载到指定位置后,找一个地方解压(记住这个路径,后面配置环境变量用)。

    3   环境配置

    4   检查是否配置成功

    四、VsCode配置c语言

    1. 下载c/c++插件

    2. 运行代码 

    3. 调整和优化

    task.json文件

    生成launch.json文件

    多文件的运行和调试

    多项目管理和scanf输入

    五、配置C++

    卸载VSCode

    1.直接控制面板卸载

    2.删除安装插件(位置为:C:\Users\smxsh\.vscode)

    3.删除配置信息 


    一、简介

    1. MinGW MinGW-W64 区别和联系
    MinGW和MinGW-W64都是用于Windows平台的轻量级GNU工具链,用于开发和编译C和C++程序。

    MinGW(Minimalist GNU for Windows)是一个32位的GNU工具链,它提供了一套基于GNU的开发环境,包括GCC编译器和一些GNU库,可以用来编译Windows下的C和C++程序。但MinGW只支持32位程序的编译。

    MinGW-W64是一个64位的GNU工具链,是MinGW的升级版,原本它是MinGW的分支,后来成为独立发展的项目,它支持同时编译32位和64位程序。它包括了一系列的GNU库和工具,例如GCC、Binutils、GDB等,还支持一些实用工具和库,如OpenMP、MPI等。

    总的来说,MinGW-W64可以看作是MinGW的升级版,它支持更多的编译选项和更多的库,可以编译出更加高效和安全的程序。

    另外,MinGW-W64原本是从MinGW项目fork出来的独立的项目。MinGW 早已停止更新,内置的GCC最高版本为4.8.1,而MinGW-W64目前仍在维护,它也是GCC官网所推荐的。

    关于更多 MinGW 和 MinGW-W64 相关的知识:

    科普MinGW MinGW-W64_mingw64_whatday的博客-CSDN博客

    c++ - What is the difference between MinGW, MinGW-w64 and MinGW-builds? - Stack Overflow

    MinGW-w64官网:c++ - What is the difference between MinGW, MinGW-w64 and MinGW-builds? - Stack Overflow

    GCC官网:GCC, the GNU Compiler Collection - GNU Project

    2. MSVCRT UCRT 介绍

    MSVCRT和UCRT都是用于Windows平台的C运行时库,提供了基本的C函数和类型,用于C程序的开发和运行。

    MSVCRT(Microsoft Visual C Runtime)是Microsoft Visual C++早期版本使用的运行时库,用于支持C程序的运行。它提供了一些常用的C函数,如printf、scanf、malloc、free等。MSVCRT只能在32位Windows系统上运行,对于64位系统和Windows Store应用程序不支持。

    UCRT(Universal C Runtime)是在Windows 10中引入的新的C运行时库,用于支持C程序的运行和开发。UCRT提供了一些新的C函数,同时还支持Unicode字符集和安全函数,如strcpy_s、strcat_s、_itoa_s等。UCRT同时支持32位和64位系统,并且可以与Windows Store应用程序一起使用。

    总的来说,UCRT是Microsoft为了更好地支持Windows 10和Windows Store应用程序而开发的新一代C运行时库,相比于MSVCRT,UCRT提供了更多的功能和更好的兼容性。但对于旧的32位Windows系统,MSVCRT仍然是必需的。


    二、下载

    MinGW-w64 更新日志: 

    Changelog - MinGW-w64

    MinGW-w64 源码地址:

    找了很多教程, 基本都是从 sourceforge 上下的 8.1.0 版本,8.1.0版本是2018年更新的,属实有点老,因此借着本次重装系统,也将其更新一下~~~~

    1  旧版安装(8.1.0) 

    从 sourceforge.net 下载

    • 在线安装
    1. Win32 位:Download mingw-w64-install.exe (MinGW-w64 - for 32 and 64 bit Windows) (sourceforge.net)
    • 离线安装:
    1. Win32 位:MinGW-w64 - for 32 and 64 bit Windows - Browse /Toolchains targetting Win32/Personal Builds/mingw-builds at SourceForge.net
    2. Win64 位:MinGW-w64 - for 32 and 64 bit Windows - Browse /Toolchains targetting Win32/Personal Builds/mingw-builds at SourceForge.net

    不推荐在线安装,安装过程特别慢,而且还可能失败!
    注意:这里提供的二进制安装程序是旧的,支持的GCC版本停留在了"MinGW-W64 GCC-8.1.0"

    截至目前GCC最新版本为:GCC-13.2
    详情请参考:GCC Releases - GNU Project

    如果你有特定需求,需要使用旧版本的,你可以参考下面的文章进行安装及配置:

    使用VScode编写C语言程序 环境安装配置 保姆级教程_vscode安装编译器_Siobhan. 明鑫的博客-CSDN博客

    2  新版安装(本次采用较新版本~~~)

    github 下载

    首先,到 MinGW-w64官网->下载

    往下, 找到 MinGW-builds , 点击下面的 Github 链接。

    当然,为了方便,链接放这里了:

     Releases · niXman/mingw-builds-binaries · GitHub

    13.2.0版本:Releases · mmozeiko/build-gcc-mingw (github.com)
    13.1.0官方GitHub版本:Releases · niXman/mingw-builds-binaries (github.com)


    镜像站点 下载

    网上找到的一个MinGW-w64镜像站点
    Index of /mingw

    ​ 

    最新版本更新到12.2.0


     自己编译

    直接编译会比较复杂,这里推荐几个大神写好的MinGW-w64编译工具:

    niXman/mingw-builds: Scripts for building the 32 and 64-bit MinGW-W64 compilers for Windows (github.com)

    mmozeiko/build-gcc-mingw: Automatic 32-bit and 64-bit Windows build of gcc, mingw-w64, gdb and make. (github.com)

    怎么使用?看对应的Readme介绍,本文不介绍。


    三、安装与配置

    1. 在线安装(这里仅作参考了解)

    这里不介绍 sourceforge.net上的在线安装,它上面的GCC版本太老了~~~

    这里介绍Releases · Vuniverse0/mingwInstaller (github.com)

    的在线安装方式:

    1)下载mingwInstaller.exe

    2)以管理员身份运行mingwInstaller.exe,开始安装

    3)选择GCC版本
    注意:有好几个版本的mingwInstaller.exe,不同的版本支持的GCC版本不一样,我这里使用的是1.2.0版

    4)选择软件架构
    选择32bit还是64bit,看你自己的操作系统是多少位的

    5)选择线程模型
    你开发的程序如果是运行在Windows系统上就选win32,如果是运行在其他系统(如 Linux,Unix,Mac OS等)就选posix
    更多信息请参考:windows - mingw-w64 threads: posix vs win32 - Stack Overflow

    6)选择构建版本
    选择构建版本,这里好像只有一个rev1,一般保持默认即可

    7)选择运行时库类型
    选择运行时库类型,前面简介里有介绍

    8)选择安装位置
    可以勾选上Create shortcut on Desktop,使用会方便些

    9)安装过程(自动下载、解压、安装配置)

    2. 离线安装(这是本文安装的重点,也是本机安装的版本~~~)★★★

    从 GitHub或镜像站点下载编译好的安装程序包(【二、下载】中提供的有地址)

    以  Releases · niXman/mingw-builds-binaries (github.com)为例,离线安装比较简单,只需下载解压即可

    本此安装采用的是新版官方网址中GitHub的13.1.0的版本!!!!

    1   下载MinGW-w64的安装包

    根据自己的需要选择适合的安装包

    • 32位的操作系统,选择i686;64位的操作系统,选择x86_64
    • 13.1.0 是GCC的版本号,其他版本的你需要往下找;
    • win32是开发windows系统程序的协议,posix是其他系统的协议(例如Linux、Unix、Mac OS),更多信息参考:windows - mingw-w64 threads: posix vs win32 - Stack Overflow
    • 异常处理模型seh(新的,仅支持64位系统),sjlj(稳定的,64位和32位都支持), dwarf(优于sjlj的,仅支持32位系统),更多信息参考:c++ - What is difference between sjlj vs dwarf vs seh? - Stack Overflow
    • msvcrt、ucrt 运行时库类型,有关介绍请参考文章简介部分;
    • rt_v11 运行时库版本;
    • rev1 构建版本;

    可以参考以下文章决定下载版本:

    WinLibs - GCC+MinGW-w64 compiler for Windows

    在 Visual Studio Code 中开始在 Linux 上C++

    Downloads - MinGW-w64

    最终决定下载:x86_64-13.1.0-release-posix-seh-ucrt-rt_v11-rev1 版本

    posix更加兼容,仅POSIX线程构建(其中还包括 Win32 API 线程函数);

    SEH 表示 64 位 (x86_64);

    ucrt:除非您的目标是旧版本的 Windows,否则 UCRT 作为运行时库是更好的选择,因为它是为了更好地支持最新的 Windows 版本以及提供更好的标准一致性而编写的(详细参考:Upgrade your code to the Universal CRT | Microsoft Learn

    这里我们选择安装:

    2   下载到指定位置后,找一个地方解压(记住这个路径,后面配置环境变量用)。

    3   环境配置

    1)如果你是按照【1.在线安装】的,可以不用配置环境变量,直接打开MinGW-W64-64bit快捷方式(桌面或开始菜单),然后在打开的命令行窗口中直接就可以使用gcc等命令

    2)如果你是按照【2.离线安装】的,将解压后的目录下的bin路径,手动添加到系统的PATH环境变量。这里是我们最终选择的方式,因此再次介绍一下具体配置!!!

    解压后的文件大致如下图:

    进入mingw64下的bin文件夹,复制当前路径

    Win + i  唤起系统设置,输入高级系统设置并进入

    点击环境变量,选择path,编辑,新建,粘贴路径,按下三个确定

    4   检查是否配置成功

    1. win+R 打开cmd

    2. 输入gcc -v 或g++ -v

     

    1. C:\Users\smxsh>g++ -v
    2. Using built-in specs.
    3. COLLECT_GCC=g++
    4. COLLECT_LTO_WRAPPER=D:/Software/c++/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/13.1.0/lto-wrapper.exe
    5. Target: x86_64-w64-mingw32
    6. Configured with: ../../../src/gcc-13.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/buildroot/x86_64-1310-posix-seh-ucrt-rt_v11-rev1/mingw64 --enable-host-shared --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-libstdcxx-filesystem-ts=yes --disable-libssp --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev1, Built by MinGW-Builds project' --with-bugurl=https://github.com/niXman/mingw-builds CFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-ucrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-ucrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/buildroot/x86_64-1310-posix-seh-ucrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/buildroot/x86_64-1310-posix-seh-ucrt-rt_v11-rev1/mingw64/opt/lib -L/c/buildroot/prerequisites/x86_64-zlib-static/lib -L/c/buildroot/prerequisites/x86_64-w64-mingw32-static/lib ' LD_FOR_TARGET=/c/buildroot/x86_64-1310-posix-seh-ucrt-rt_v11-rev1/mingw64/bin/ld.exe --with-boot-ldflags=' -Wl,--disable-dynamicbase -static-libstdc++ -static-libgcc'
    7. Thread model: posix
    8. Supported LTO compression algorithms: zlib
    9. gcc version 13.1.0 (x86_64-posix-seh-rev1, Built by MinGW-Builds project)
    10. C:\Users\smxsh>

    此时配置成功! 

    where gcc # 查看gcc位置

    gcc --version # 查看gcc版本

    1. C:\Users\smxsh>where gcc
    2. D:\Software\c++\mingw64\bin\gcc.exe
    1. C:\Users\smxsh>gcc --version
    2. gcc (x86_64-posix-seh-rev1, Built by MinGW-Builds project) 13.1.0
    3. Copyright (C) 2023 Free Software Foundation, Inc.
    4. This is free software; see the source for copying conditions. There is NO
    5. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


    四、VsCode配置c语言

    1. 下载c/c++插件

     打开VScode安装插件  C/C++ ,等待安装完毕后重启VScode

     

    2. 运行代码 

     1.在code下新建文件夹C_C++(用来放c/c++的项目)

     2.使用vscode编辑器打开此文件夹

      

       

    3.在C_C++文件夹下创建test_helloC文件夹——创建test.c文件

      

    复制helloWorld代码进去:

    1. #include
    2. #include
    3. int main()
    4. {
    5. printf("Hello World!\n");
    6. printf("你好世界!\n");
    7. system("pause"); // 防止运行后自动退出,需头文件stdlib.h
    8. return 0;
    9. }

      4.VScode菜单栏,点击运行,启动调试,稍等程序运行,输出结果在下方终端,上方调试面板,点击最右边的 橙色方框 停止程序运行

           

       此时发现左侧会自动生成.vscode文件夹和test.exe。终端输出我们想要的结果。接下来进行优化配置~~~

    3. 调整和优化

    请根据自己的需要进行优化

    代码运行后 .vscode 文件夹会自动生成在你的源文件目录下.vscode 文件夹下的 task.json 

    • task.json文件

    将生成的task.json文件修改如下:

    1. // "${file}",
    2. "*.c",//当前文件夹所有的.c文件都编译

    此时整个task.json文件为:

    1. {
    2. "tasks": [
    3. {
    4. "type": "cppbuild",
    5. "label": "C/C++: gcc.exe 生成活动文件",
    6. "command": "D:\\Software\\c++\\mingw64\\bin\\gcc.exe",
    7. "args": [
    8. "-fdiagnostics-color=always",
    9. "-g",
    10. // "${file}",
    11. "*.c",//当前文件夹所有的.c文件都编译
    12. "-o",
    13. "${fileDirname}\\${fileBasenameNoExtension}.exe"//生成的可执行程序名称
    14. ],
    15. "options": {
    16. "cwd": "${fileDirname}"
    17. },
    18. "problemMatcher": [
    19. "$gcc"
    20. ],
    21. "group": {
    22. "kind": "build",
    23. "isDefault": true
    24. },
    25. "detail": "调试器生成的任务。"
    26. }
    27. ],
    28. "version": "2.0.0"
    29. }

     【断点调试】:

      

    当前调试只是单个文件,为了实现多个文件断点调试则配置launch.json文件。

    • 生成launch.json文件

      

       此时,在.vscode 文件夹下自动生成 launch.json 文件,选择【添加配置】

        

     添加gdb启动配置  

    此时更改两个配置,首先找到gdb.exe的路径复制出来

       然后将launch.json文件中的

    "miDebuggerPath": "/path/to/gdb",  更改为复制的路径

     "program" 更改为  task.json 文件中的    "${fileDirname}\\${fileBasenameNoExtension}.exe"

     重要的是修改:"program""miDebuggerPath"

    具体如下:

    1. {
    2. // 使用 IntelliSense 了解相关属性。
    3. // 悬停以查看现有属性的描述。
    4. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    5. "version": "0.2.0",
    6. "configurations": [
    7. {
    8. "name": "(gdb) 启动",
    9. "type": "cppdbg",
    10. "request": "launch",
    11. "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",//需要调试的可执行程序
    12. "args": [],
    13. "stopAtEntry": false,
    14. "cwd": "${fileDirname}",
    15. "environment": [],
    16. "externalConsole": false,
    17. "MIMode": "gdb",
    18. "miDebuggerPath": "D:\\Software\\c++\\mingw64\\bin\\gdb.exe",//gdb的位置
    19. "setupCommands": [
    20. {
    21. "description": "为 gdb 启用整齐打印",
    22. "text": "-enable-pretty-printing",
    23. "ignoreFailures": true
    24. },
    25. {
    26. "description": "将反汇编风格设置为 Intel",
    27. "text": "-gdb-set disassembly-flavor intel",
    28. "ignoreFailures": true
    29. }
    30. ]
    31. }
    32. ]
    33. }
    • 多文件的运行和调试

    要能够编译一个文件中的多个文件,需要定制tasks.json文件的内容编译多个源代码文件:

    • 通过把"${file}"修改为"${workspaceFolder}\\*.c",可以构建当前工作区中的所有C文件。
    • 通过把""${file)"修改为"${workspaceFolder}\\*.cpp",可以构建当前工作区中的所有C++文件。 

    test_helloC 文件夹下新建max.h文件放一个函数声明,新建max.c文件放一个函数做实现,在test.c使用函数

    max.h 

      

    int Max(int a, int b);

    max.c 

      

    1. int Max(int a, int b)
    2. {
    3. return a > b ? a : b;
    4. }

     test.c

      

    1. #include
    2. #include
    3. #include "max.h" // 引用自己的头文件
    4. int main()
    5. {
    6. int a = 10;
    7. int b = 20;
    8. int c = Max(a, b);
    9. printf("%d\n", c);
    10. printf("Hello World!\n");
    11. printf("你好世界!\n");
    12. system("pause"); // 防止运行后自动退出,需头文件stdlib.h
    13. return 0;
    14. }

       断点调试:
      

    • 多项目管理和scanf输入

    C_C++文件夹——新建test_scanf文件——新建test2.c文件

    1. #include
    2. int main()
    3. {
    4. int a;
    5. int b;
    6. scanf("%d%d", &a, &b);
    7. printf("%d*%d=%d\n", a, b, a * b);
    8. return 0;
    9. }

      

     点击运行c/c++文件,在终端手动输入a,b的值  

      

    五、配置C++

    •  配置g++.exe為編譯器

    鼠标点在.cpp 的源文件内部,按 ctrl+shift+p 快捷键,在弹出的界面中选择:【C/C++∶编辑配置(UI)】,然后进入设置页面。
    找到配置名称,这里我们再添加一个C++的配置,点击【添加配置】

     輸入C++,也可以根据自己的喜好来设置~~~

     编译器路径,根据自己的mingw64的路径,g++.exe,我的环境如下:

     

    这时,在c_cpp_properties.json文件中就能看到名叫:“C++ ”的配置!

    接下来就是实操,生成tasks.json文件

    1、新建文件夹C++

    •    打开vscode——文件——将文件夹添加到工作区

      

    • 新建C++文件夹

      

      

    • 新建test.cpp文件 

      

    1. #include <iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. cout << "hello C++!" << endl;
    6. return 0;
    7. }

    注意:此时生成为g++.exe

      

     运行结果:  

    当前同样只针对单个文件,若需要调试运行多个c++文件同样需要配置.vscode下的json文件~~~

    后续再补充更新!

    最后说明一下卸载vscode的方法:

    卸载VSCode

    1.直接控制面板卸载

    2.删除安装插件(位置为:C:\Users\smxsh\.vscode)

      

    3.删除配置信息 

     位置为:C:\Users\smxsh\AppData\Roaming\Code文件夹

    直接将该文件夹删除,才可彻底删干净!!!

    注意appdata文件夹为隐藏文件夹,显示方式如下

      

      

     参考json文件配置:

    在 Visual Studio Code 中开始在 Linux 上C++

    使用VScode编写C语言程序 环境安装配置 保姆级教程_vscode安装编译器_Siobhan. 明鑫的博客-CSDN博客

    VSCode 配置 C++ 环境_vscode如何只运行不调试_冰光之梦的博客-CSDN博客

  • 相关阅读:
    危化品安全生产风险监测预警系统的构建与实施
    前端面试题
    Ascend训练,如何将算子强制转换为float32
    LeetCode-897. Increasing Order Search Tree [C++][Java]
    【2023云栖】刘一鸣:Data+AI时代大数据平台建设的思考与发布
    Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改
    《JavaEE》HTTPS
    厂家解读新标准GB21148-2020《足部防护 安全鞋》的变化有哪些(二)
    Kibana使用Watcher监控服务日志并发送飞书报警(Markdown)
    matlab求解时变系统的Riccati矩阵微分方程
  • 原文地址:https://blog.csdn.net/weixin_46474921/article/details/132886900