Windows10的MinGW安装和VS Code配置C/C++编译环境

news2024/12/23 10:55:07

1. MinGW下载安装

         首先需要说明的是VS Code是一个编辑器,而不是编译器‌ 编辑器和编译器是有很明显的区别

1.1 编辑器和编译器区别

        编辑器‌是一种用于编写和编辑文本的应用软件,主要用于编写程序的源代码。编辑器提供基本的文本编辑功能,如增删改查、使用各种命令和快捷键等。‌你用记事本编写源程序也行,用Notepad++编辑源代码也行,用SourceInsight编辑也行,但你编完了没啥用,因为编译工具链生成不了可执行的文件。

        编译器‌是一种将高级编程语言翻译成机器语言或目标代码的程序。编译器的核心功能是将源代码转换为机器能理解的指令,通常包括预处理、编译、链接等步骤。‌比如开发STM32单片机程序用Keil MDK,在Keil上编完可以执行编译链接下载将程序烧录到单片机上;开发Arduino代码用Arduino IDE也可以将编好的Arduino代码烧录到Arduino UNO开发板上,再比如开发TI芯片的CC25XX系列单片机,需要用IAR编译平台。

1.2 为啥需要安装MinGW

        VS Code只是一个编辑器和扩展支持集成开发环境(IDE),但它本身并不包含编译器。所以想用VS Code编译C或者C++的程序需要自己手动配置编译环境, MinGW是GCC的windows版本,能够使用GCC的命令在windows环境下编译C/C++代码,如果你接触过Linux的驱动和应用,肯定对GCC编译链不陌生。

        GCC(GNU Compiler Collection,GNU编译器套件)是一个开源的、跨平台的编译器套件,支持多种编程语言和目标架构,包括C、‌C++、‌Objective-C、‌Fortran、‌Ada、‌Go等多种语言‌。GCC的主要功能是将源代码编译成机器代码,通常生成可执行文件或库文件。

1.3 安装MinGW

接下来按步骤的展示如何下载和安装MinGW,首先打开其官网链接:

https://www.mingw-w64.org/

然后点左侧的Dowloads

 然后看右侧的MinGW-W64-builds,然后看有个github链接,很多教程上并没有这样写,因为MinGW已经把安装包放到Github上了,他们写的还是以前的查找安装包的方式。

 打开后可以看到当前的最新版本是14.2.0,然后我的电脑是windows10 64位的操作系统,就选X86_64的就行(现在好像很少见32位的操作系统了吧)。然后点击一下就会自动下载,受限于github的网络,如果没有VPN加速会下载的很慢,所以我把这个版本的安装包链接放在下面,有需要的可以自行下载:

当然你也可以点击Tags切换版本,可以查看和下载历史版本

        下载好MinGW安装包后是个压缩包,解压缩就可以了,解压缩后的内容如下,重点关注bin文件夹就行。 

然后需要配置你自己电脑的环境变量,依次点击鼠标右键此电脑-->属性-->在查找设置中输入:高级环境设置,然后打开如下图所示,查看高级,然后点击环境变量

系统变量中找到Path变量,然后按下图操作

然后把刚刚下载的MinGW安装包的bin文件夹的路径复制进去,然后点确定,一定要是bin文件夹那一级,比如我的是:H:\minGW\x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0\mingw64\bin。如下图所示

 1.4 验证安装是否成功

电脑键盘按下win图标按键+R,会弹出来搜索框,输入:cmd

然后输入gcc -v,,如果出现了gcc version 14.2.0就说明MinGW安装成功了。

2. VS Code环境配置

 2.1 安装C/C++依赖

        VS Code安装很简单,参考其他教程即可,安装好VS Code后打开,按下图的四个步骤操作,分别安装C/C++扩展包和C/C++运行包。安装成功后一定要重启VS Code !!!

2.2 配置C/C++的编译环境

 首先在除了C盘外的任何一个盘里创建一文件夹,以后写的C/C++代码就放在这里。比如我的如下图:

然后打开VS Code,选择打开文件夹(Open Folder),打开之后选择刚刚新建的Ctest文件夹,出现如下界面

然后在VSCODE_202410(你自己起啥名随便)这个名字后面点一个图标新建一个文件夹,起名为 .vscode     注意:前面的点也要打进去!!!

        然后在这个新建的.vscode文件夹中新建分别四个文件,这个时候就要鼠标右键点到.vscode上,会出现一个下拉框,点新建文件。而不是在VSCODE_202410后面点新建文件!!!
        第一个文件名称为:c_cpp_properties.json        如下所示,"H:/minGW/x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0/mingw64/bin/g++.exe",这一句替换成你自己的安装目录然后加上g++.exe,我的是H:/minGW/x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0/mingw64/bin,
        注意:从你的MinGW中的bin文件夹路径复制下来后,所有都是反斜杠,一定要把它改成斜杠!!!
因为放在双引号里,以反斜杠开头系统会认为是转义字符,而不是一个路径。

{
    "configurations": [
      {
        "name": "Win64",
        "includePath": ["${workspaceFolder}/**"],
        "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
        "windowsSdkVersion": "10.0.18362.0",
        "compilerPath": "H:/minGW/x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0/mingw64/bin/g++.exe",
        "cStandard": "c17",
        "cppStandard": "c++17",
        "intelliSenseMode": "gcc-x64"
      }
    ],
    "version": 4
  }
  

第二个文件名称为:launch.json

同样也要记得替换路径!!!
 

{
    "version": "0.2.0",
    "configurations": [
      {
        "name": "(gdb) Launch", 
        "type": "cppdbg", 
        "request": "launch", 
        "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", 
        "args": [], 
        "stopAtEntry": false,
        "cwd": "${workspaceRoot}",
        "environment": [],
        "externalConsole": true, 
        "MIMode": "gdb",
        "miDebuggerPath": "H:/minGW/x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0/mingw64/bin/g++.exe",
        "preLaunchTask": "g++",
        "setupCommands": [
          {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
          }
        ]
      }
    ]
  }
  

第三个文件名称为:settings.json

这个文件内容没有需要替换的

{
  "files.associations": {
    "*.py": "python",
    "iostream": "cpp",
    "*.tcc": "cpp",
    "string": "cpp",
    "unordered_map": "cpp",
    "vector": "cpp",
    "ostream": "cpp",
    "new": "cpp",
    "typeinfo": "cpp",
    "deque": "cpp",
    "initializer_list": "cpp",
    "iosfwd": "cpp",
    "fstream": "cpp",
    "sstream": "cpp",
    "map": "c",
    "stdio.h": "c",
    "algorithm": "cpp",
    "atomic": "cpp",
    "bit": "cpp",
    "cctype": "cpp",
    "clocale": "cpp",
    "cmath": "cpp",
    "compare": "cpp",
    "concepts": "cpp",
    "cstddef": "cpp",
    "cstdint": "cpp",
    "cstdio": "cpp",
    "cstdlib": "cpp",
    "cstring": "cpp",
    "ctime": "cpp",
    "cwchar": "cpp",
    "exception": "cpp",
    "ios": "cpp",
    "istream": "cpp",
    "iterator": "cpp",
    "limits": "cpp",
    "memory": "cpp",
    "random": "cpp",
    "set": "cpp",
    "stack": "cpp",
    "stdexcept": "cpp",
    "streambuf": "cpp",
    "system_error": "cpp",
    "tuple": "cpp",
    "type_traits": "cpp",
    "utility": "cpp",
    "xfacet": "cpp",
    "xiosbase": "cpp",
    "xlocale": "cpp",
    "xlocinfo": "cpp",
    "xlocnum": "cpp",
    "xmemory": "cpp",
    "xstddef": "cpp",
    "xstring": "cpp",
    "xtr1common": "cpp",
    "xtree": "cpp",
    "xutility": "cpp",
    "stdlib.h": "c",
    "string.h": "c"
  },
  "editor.suggest.snippetsPreventQuickSuggestions": false,
  "aiXcoder.showTrayIcon": true
}

第四个文件名称为:tasks.json

这个文件内容也没有需要替换的

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "g++",
      "command": "g++",
      "args": [
        "-g",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}.exe"
      ],
      "problemMatcher": {
        "owner": "cpp",
        "fileLocation": ["relative", "${workspaceRoot}"],
        "pattern": {
          "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
          "file": 1,
          "line": 2,
          "column": 3,
          "severity": 4,
          "message": 5
        }
      },
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

2.3 测试能否成功编译C/C++代码

        接下来在VSCODE_202410新建一个文件夹,名字随便起,我的就叫Ctest,保持和.vscode同级,以后的C/C++代码就都放在这里编写和编译。

        新建完成Ctest文件夹后,就可以在该文件夹中新建C/C++源代码文件了,点击Ctest右键,新建文件test.cpp。注意C文件的源文件是.c,C++文件的源文件是.cpp。

#include <iostream>

using namespace std;

int main( )
{
    cout << "晚上好 胖虎" << endl;
    cout << "今天是2024年10月9日" << endl;
    cout << "现在已经晚上十一点多了,该睡觉了!" << endl;
    return 0;
}

代码运行结果如下,此时说明可以完美运行C++程序,编译环境配置完成。

2.4 多个C文件同时编译的配置问题

可以参考这篇博客,我懒得写了

https://blog.csdn.net/weixin_43728814/article/details/120812658?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-120812658-blog-140999908.235%5Ev43%5Epc_blog_bottom_relevance_base7&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-120812658-blog-140999908.235%5Ev43%5Epc_blog_bottom_relevance_base7&utm_relevant_index=1icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_43728814/article/details/120812658?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-120812658-blog-140999908.235%5Ev43%5Epc_blog_bottom_relevance_base7&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-120812658-blog-140999908.235%5Ev43%5Epc_blog_bottom_relevance_base7&utm_relevant_index=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2201014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试题:Redis(三)

1. 面试题 背景 问题&#xff0c;上面业务逻辑你用java代码如何写&#xff1f; 2. 缓存双写一致性谈谈你的理解&#xff1f; 3. 双检加锁策略 多个线程同时去查询数据库的这条数据&#xff0c;那么我们可以在第一个查询数据的请求上使用一个 互斥锁来锁住它。 其他的线程走到这…

内核编译 设备驱动 驱动程序

内核编译 一、内核编译的步骤 编译步骤&#xff1a; (linux 内核源码的顶层目录下操作 ) 1. 拷贝默认配置到 .config cp config_mini2440_td35 .config 2. make menuconfig 内核配置 make menuconfig 3. make uImage make u…

docker-compose无法切换用户

问题描述 jupyter:image: flink:1.19-pyprivileged: trueuser: rootports:- "9999:8888"volumes:- /data/docker_data/jupyter:/workcommand: sh -c "cd / && jupyter notebook --ip 0.0.0.0 --port 8888 --allow-root --NotebookApp.passwordsha1:658…

循环神经网络-LSTM网络

文章目录 前言一、LSTM网络简介二、LSTM的门结构1.遗忘门2.输入门3.输出门 三、总结 前言 循环神经网络&#xff08;Recurrent Neural Networks&#xff0c;RNN&#xff09;是一种特殊的神经网络&#xff0c;具有能够处理序列数据的能力&#xff0c;然而&#xff0c;RNN在处理…

团员申请书怎么写?这里归纳了一些模板

团员申请书怎么写&#xff1f;随着社会的快速发展和时代的进步&#xff0c;越来越多的青年人意识到加入团组织的重要性。作为新时代的青年&#xff0c;我们应当积极响应国家的号召&#xff0c;参与到团组织的建设中来。而想要成为共青团员&#xff0c;首先需要撰写一份规范的团…

新手一次过软考高级(系统架构设计师)秘笈,请收藏!

软考系统架构设计师是高级科目之一&#xff0c;也是比较有难度的科目&#xff0c;但是只要你把该掌握的知识掌握熟练&#xff0c;技能水平达到要求&#xff0c;那还是考可以拿下证书的。 系统架构设计师适合人群&#xff1a;适合熟悉开发过程与方法、数据库、信息安全的技术人员…

NLP: SBERT介绍及sentence-transformers库的使用

1. Sentence-BERT Sentence-BERT(简写SBERT)模型是BERT模型最有趣的变体之一&#xff0c;通过扩展预训练的BERT模型来获得固定长度的句子特征&#xff0c;主要用于句子对分类、计算两个句子之间的相似度任务。 1.1 计算句子特征 SBERT模型同样是将句子标记送入预训练的BERT模型…

OmniH2O——通用灵巧且可全身远程操作并学习的人形机器人(其前身H2O是HumanPlus的重要参考)

前言 由于我司一直在针对各个工厂、公司、客户特定的业务场景&#xff0c;做解决方案或定制开发&#xff0c;所以针对每一个场景&#xff0c;我们都会反复考虑用什么样的机器人做定制开发 于此&#xff0c;便不可避免的追踪国内外最前沿的机器人技术进展&#xff0c;本来准备…

数据库管理-第249期 23ai:全球分布式数据库-请求路由与查询过程(20241008)

数据库管理249期 2024-10-08 数据库管理-第249期 23ai&#xff1a;全球分布式数据库-请求路由与查询过程&#xff08;20241008&#xff09;1 客户端应用请求路由1.1 分片键1.2 Oracle连接驱动 2 查询过程和查询协调器2.1 指定一致性级别2.2 高可用与性能 总结 数据库管理-第249…

拍立淘API接口以图搜商品列表功能实现技术分享item_search_img|返回商品列表商品id商品价格url

开发背景 在电商平台的快速发展中&#xff0c;用户对于商品搜索的效率和准确性提出了越来越高的要求。传统的基于关键词的搜索方式&#xff0c;虽然在一定程度上满足了用户的需求&#xff0c;但在面对复杂的商品信息和多样化的用户搜索意图时&#xff0c;仍存在诸多局限性。为…

PyTorch搭建GNN(GCN、GraphSAGE和GAT)实现多节点、单节点内多变量输入多变量输出时空预测

目录 I. 前言II. 数据集说明III. 模型3.1 GCN3.2 GraphSAGE3.3 GAT IV. 训练与测试V. 实验结果 I. 前言 前面已经写了很多关于时间序列预测的文章&#xff1a; 深入理解PyTorch中LSTM的输入和输出&#xff08;从input输入到Linear输出&#xff09;PyTorch搭建LSTM实现时间序列…

IO相关,标准输入输出及错误提示

一、IO简介 1.1 IO的过程 操作系统的概念&#xff1a;向下统筹控制硬件&#xff0c;向上为用户提供接口。 操作系统的组成 内核 外壳&#xff08;shell&#xff09; linux的五大功能&#xff1a;进程管理、内存管理、文件管理、设备管理、网络管理。 最早接触的IO&#xf…

01背包,CF 1974E - Money Buys Happiness

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1974E - Money Buys Happiness 二、解题报告 1、思路分析 问我们能够到达…

docker简述

1.安装dockers&#xff0c;配置docker软件仓库 安装&#xff0c;可能需要开代理&#xff0c;这里我提前使用了下好的包安装 启动docker systemctl enable --now docker查看是否安装成功 2.简单命令 拉取镜像&#xff0c;也可以提前下载使用以下命令上传 docker load -i imag…

深度学习笔记(持续更新)

注&#xff1a;本文所有深度学习内容都是基于PyTorch&#xff0c;PyTorch作为一个开源的深度学习框架&#xff0c;具有可以动态计算图、拥有简洁易用的API、支持GPU加速等特点&#xff0c;在计算机视觉、自然语言处理、强化学习等方面有广泛应用。 使用matplotlib绘图&#xff…

Linux 常用命令详解,线上问题排查必备

comm 比较文件行 comm 是 Linux 系统下的用于比较两个已排序文件的命令行工具。主要用于找出文件之间的差异或相同之处&#xff0c;例如两个文件中相同的行、仅在第一个文件中的行以及仅在第二个文件中的行。 基本语法 comm [OPTION] FILE1 FILE2可选参数OPTION如下&#xf…

图像分类-demo(Lenet),tensorflow和Alexnet

目录 demo(Lenet) 代码实现基本步骤&#xff1a; TensorFlow 一、核心概念 二、主要特点 三、简单实现 参数: 模型编译 模型训练 模型评估 Alexnet model.py train.py predict.py demo(Lenet) PyTorch提供了一个名为“torchvision”的附加库&#xff0c;其中包含…

芯课堂 | FatFs文件系统的移植及应用指南

1、FatFs文件系统简介 FatFs是用于小型嵌入式系统的通用FAT/exFAT文件系统模块。FatFs模块是按照ANSI C&#xff08;C89&#xff09;编写的&#xff0c;与磁盘控制层完全分离。因此&#xff0c;它独立于平台和存储设备&#xff0c;具有良好的硬件平台独立性。它可以集成到资源有…

这个问题做项目的时给某些客户普及过,这里再给你普及一下

有些因素不是地理概念&#xff0c;没错&#xff01;但与地理有关&#xff01;可以通过地理位置将他们链接起来&#xff0c;再结合其它业务数据&#xff0c;完成数据分析&#xff01;例如百度地图会将&#xff1a;餐饮、文化、交通、住宿、甚至价格、天气与位置关联分析&#xf…

S7---基本介绍

目录 高通S7和S7 Pro Gen 1声音平台 音频性能的新层次 高通XPAN技术 卓越的听力增强 高通第四代ANC 特征 QualcommS7 Pro Gen 1附加功能 QualcommS7 Pro Gen 1框图 高通S7和S7 Pro Gen 1声音平台 声音被重新想象。QualcommS7声音平台旨在开启一个新的高级音频性能级别。…