Arch使用vs code编译调试C/C++

2023-05-16

Arch使用vs code编译调试C/C++

Windows平台下无脑下一步编译器就安装好了,转到linux平台下基本没有无脑下一步这种操作,这个时候就需要手动配置相关程序IDE+GCC,去年有过一次手动安装gcc和依赖的一次经历,时隔太久已经记不太清步骤,这次略过了gcc的配置过程,因为base-devel已经包含gcc。只配置了vs,下次有需求的时候再写一下配置gcc的过程

安装VScode

安装code

sudo pacman -S code

VS插件

首次打开VS后会提示直接打开插件安装界面,如果需要中文直接搜索language找到简体中文安装语言包。

安装gcc和标准库

在安装arch的时候基本都会选择安装base-devel包,已经包含了gcc和glibc只需要安装调试程序GDB即可

编译C语言程序需要gcc编译,直接安装gcc和C库glibc

sudo pacman -S gcc glibc

Hello World

建立工作目录并且打开VS

mkdir projects
cd projects
mkdir helloworld
cd helloworld
code

在工作目录下会默认生成.vscode文件夹,包含相关配置文件

  • task.json (编译打包设置)
  • launch.json (debug设置)
  • c_cpp_properties.json (编译路径和补全设置)

创建第一个helloworld.cpp文件

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};

    for (const string& word : msg)
    {
        cout << word << " ";
    }
    cout << endl;
}

Ctrl+S 保存文件

Ctrl+Shift+E 在左侧文件浏览器中定位文件

编译hello world

接下来需要创建一个tasks.json配置文件告诉VS如何编译一个程序,上文提到的.vsconde配置下会创建一个tasks.json配置文件

在菜单栏**终端(Terminal)**按钮,选择 配置默认生成程序(Configure Default Build Task)在弹出菜单中选择C/C++: g++ build active file

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "shell",
      "label": "g++ build active file",
      "command": "/usr/bin/g++",
      "args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],
      "options": {
        "cwd": "/usr/bin"
      },
      "problemMatcher": ["$gcc"],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

更多配置文件信息https://code.visualstudio.com/docs/editor/variables-reference

以上配置信息清晰明了,直译就是参数的作用。就是VS帮你调用g++编译你的cpp文件

运行编译程序

选择你要编译的文件,点击菜单栏终端(Terminal)>>运行生成任务(Run Build Task)

> Executing task: /usr/bin/gcc -g /home/jhsy/code/helloworld.cpp -o /home/jhsy/code/helloworld <


终端将被任务重用,按任意键关闭。

此时已经编译完成,直接可以在终端运行./helloworld

Debug helloworld.cpp

要运行debug的话需要配置launch.json运行GDB debugger

在主菜单上 选择运行(Run)> 添加配置 (Add Configuration) 选择C++(GDB/LLDB)

在弹出菜单中选择g++ - 生成和调试活动文件

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "g++ build and debug active file",
      "type": "cppdbg",
      "request": "launch",
      "program": "${fileDirname}/${fileBasenameNoExtension}",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "preLaunchTask": "g++ build active file",
      "miDebuggerPath": "/usr/bin/gdb"
    }
  ]
}

生成如上launch.json调试配置文件

开始调试程序

返回helloworld.cpp文件

此时左边资源管理器已经关闭的话按Ctrl+Shift+E打开资源管理器

按下F5或者在主菜单的运行(Run) > 启用调试(Start Debugging)

C/C++ 配置

通过创建c_cpp_properties.json文件控制C/C++拓展插件

按下Ctrl+Shitf+P输入**C/C++: Edit Configurations (UI)**编辑配置文件

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "gnu18",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

reference:

​ Visual Studio Code Guide https://code.visualstudio.com/docs/cpp/config-linux

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arch使用vs code编译调试C/C++ 的相关文章

  • c语言冒泡排序详解(分析每一步,附代码)

    冒泡排序 xff08 Bubble Sort xff09 xff0c 是一种计算机科学领域的较简单的排序算法 它重复地走访过要排序的元素列 xff0c 依次比较两个相邻的元素 xff0c 如果顺序 xff08 如从大到小 首字母从Z到A x
  • 解决maven update project 后项目jdk变成1.5

    一 问题描述 在Eclipse中新建了一个Maven工程 然后更改JDK版本为1 7 结果每次使用Maven gt Update project的时候JDK版本都恢复成1 5 二 原因分析 Maven官方文档有如下描述 xff1a 编译器插
  • C语言——整型和浮点型混合运算

    1 int和double混合运算 C语言int和double混合运算时 xff0c 会自动将int类型的数据转换为double类型的数据 xff0c 最后得到的结果也是double类型 如下例 xff1a double a 61 4 0 9
  • C语言——函数指针

    目录 1 函数指针概念 1 1 函数指针的声明 1 2 函数指针的定义 1 3 使用typedef定义函数指针的别名 1 4 将常数转换为函数指针 1 5 函数指针的调用 1 6 将函数指针作为函数的传入参数 2 简单的例子 1 函数指针概
  • C语言——多线程基础(pthread)

    目录 1 线程的定义以及线程的创建 1 1 线程和进程的概念 1 2 使用pthread create 函数创建进程 2 使用pthread join 等待线程结束 2 1 使用pthread join 等待线程结束 2 1 使用pthre
  • C++——双端队列(deque)

    1 双端队列 xff08 deque xff09 双端队列 xff08 deque xff09 是队列的一种变形 xff0c 一般队列只能在队尾添加元素 xff08 push xff09 xff0c 在队首删除元素 xff08 pop xf
  • Linux|集群初始化脚本--osiniit.sh简介

    前言 xff1a 不管是什么部署 xff0c 前期的准备工作通常都是比较繁琐的 xff0c 但同时这些工作又具有程式化的特征 xff0c 也就是说都是有一定的流程的 xff0c 固定的步骤的 OK xff0c shell脚本处理这样的程式问
  • C++——优先级队列(priority_queue)

    目录 1 优先级队列 xff08 priority queue xff09 1 1 基本概念 1 2 优先级队列的定义 1 3 通过重写仿函数来支持自定义数据类型 1 4 通过运算符重载来支持自定义比较函数 1 5 优先级队列的基本操作 2
  • 操作系统——进程状态

    进程从创建到执行 xff0c 再到执行完毕销毁的过程中 xff0c 经历了不同的进程状态 xff0c 进程状态部分取决于进程当前的活动 xff0c 可以将进程状态分为 xff08 1 xff09 三状态模型 xff1b xff08 2 xf
  • 操作系统——进程调度

    目录 1 基本概念 1 1 CPU I O执行周期 1 2 CPU调度程序 xff08 CPU scheduler xff09 1 3 进程状态模型 1 4 抢占调度 1 5 调度程序 xff08 dispatcher xff09 1 6
  • C++实现优先级队列模板类

    1 优先级队列 1 1 基本原理 仿照C 43 43 STL 中的优先级队列priority queue xff0c 主要实现以下功能 xff1a 向队列中添加元素后 xff0c 队列自动调整 xff0c 保证队列中优先级最高的元素在队列头
  • C++通过WMI获取计算机电池电压的程序以及我出现的问题解决

    C 43 43 通过WMI获取计算机电池电压的程序以及我出现的问题解决 ConsoleApplication1 cpp 定义控制台应用程序的入口点 include stdafx h include DXGI h include vector
  • 深度学习——批量归一化(笔记)

    主流的卷积网络基本都设计批量归一化这个层 1 为什么要批量归一化 xff1f 网络层很深 xff0c 数据在底层 xff0c 损失函数在最顶层 反向传播后 xff0c 顶层的梯度大 xff0c 所以顶层训练的较快 数据在底层 xff0c 底
  • Mininet连接ONOS的一些问题

    Mininet连接ONOS的一些问题 一 启动ONOS二 简单小问题1 Mininet创建最简拓扑后连接不上远程控制器2 Mininet创建最简拓扑后主机之间ping不通3 不启动fwd应用自己通过REST API下发流表发现两台主机间pi
  • 关于codeblocks找不到路径从而无法编译的解决方法

    下载完codeblocks后 xff0c 可能会出现像下面的情况 解决方法是 xff1a 点击codeblocks里的settings的Compiler xff08 1 xff09 可能是中间箭头蓝色的那里出错 xff0c 有些人可能会在安
  • 如何获取维普免费账号--在校外下载维普万方等全文

    如何获取维普免费账号 在校外下载维普万方等全文 如何获取维普免费账号 在校外下载维普万方等全文 1 马上就要工作了 xff0c 觉得学校里面图书馆资料很多 xff0c 并且很有用 xff0c 都可以在CNKI 万方维普等中文数据库 xff0
  • 京东网络开放之路——自研交换机探索与实践

    相比传统商业交换机 xff0c 白盒交换机具有更好的开放性和灵活性 xff0c 解决了运维管理方面的诸多痛点 xff0c 随着SONiC的不断完善和白盒交换机市场的成熟 xff0c 京东基于SONiC研发了自己的白盒交换机 xff0c 更加
  • Linux|sed命令花式批量修改文件

    前言 xff1a sed命令 xff0c 流式修改文本文件的强大工具 xff0c 比如 xff0c 最常用的关闭selinux时通常采用sed命令快速修改 OK xff0c 其实sed命令虽然强大 xff0c 但它修改文件的方式是非常多的
  • Python列表详解_List()

    Python列表 一 了解列表二 列表的创建三 访问列表中的值四 对列表进行更新五 删除列表元素 一 了解列表 什么是列表 xff1f 列表能干什么 xff1f 今天我们几分钟统统解决他 xff01 1 首先我们先来了解一下列表 列表是Py
  • Linux(Deepin、Ubuntu)安装Citrix receiver教程

    Deepin20 6安装Citrix receiver教程 安装的deepin20 6想要安装Citrix receiver xff0c 发现要么装不上 xff0c 要么装上了不能用 xff0c 找了好多资料 xff0c 最终找到可以使用的

随机推荐

  • 服务器(一):VNC view 无法打开终端问题

    1 VNC view 无法打开终端问题 参考链接 xff1a Ubuntu 的终端打不开 xff0c gnome terminal没反应 ubuntu 打开不了gnome terminal 显示错误提示exited status 8 Ubu
  • Hadoop 从零开始学习系列-wordCount

    学习基于hadoop2 5 2版本 WordCount做为hadoop的hello world程序 xff0c 今天花了半天时间 xff0c 终于跑出了结果 xff0c 以下记录过程 1 建立maven工程 xff0c 加载hadoop相关
  • 图像处理 - GLCM灰度共生矩阵如何计算

    因为最近要在OpenCV上试试各种图像分割算法的效果 xff0c 其中灰度共生算法没有办法直接调用库函数实现 xff0c 看了很多文章 xff0c 其中有一篇博文讲的很清楚 博主有提供原理和源码 xff0c 大家可以直接看原博 原文地址 x
  • SUSE12 Remote side unexpectedly closed network connection ,Connection reset by peer原因之一

    用工具新开ssh远程报错如下 xff1a 已连接的ssh中 xff0c telnet报错如下 同网段机器ssh命令报错如下 xff1a 在对比了同操作系统同文件的配置后 xff0c 排除了 etc hosts deny跟 etc hosts
  • xterm连接虚拟机里的ubuntu

    mobaxterm连接在虚拟机的abuntu 1 在Ubuntu上打开SSH服务 安装 openssh client 和 openssh server sudo apt get install openssh client sudo apt
  • 图解Linux命令之--fdisk命令

    fdisk命令 gt 磁盘分区管理工具 添加分区的流程 fdisk dev sda 选择要分区的硬盘 p 列出当前分区表 n 添加新分区 回车 选择开始的块地址 直接回车默认就可以了 43 2G 输入要添加分区的大小 43 200M xff
  • 安装docker-compose报ERROR: Cannot uninstall ‘PyYAML‘. It is a distutils installed project and thus we c

    在CentOS7中 xff0c 如果python版本为3 x xff0c 在安装docker compose时会报错 xff1a ERROR Cannot uninstall PyYAML It is a distutils install
  • PostgreSql | 数据库 |自定义函数的设计和实现

    前言 xff1a 数据库中的函数概念 和开发语言 xff0c Java xff0c PHP xff0c Python等等类似 xff0c 关系型数据库也是有函数的 xff0c 函数指的是动态的封装一部分特定功能的集合 例如 xff0c 查询
  • 元学习系列(一):Siamese Network(孪生网络)

    目前有一种说法认为 xff0c 深度学习模型在数据量较大的情况下才能取得较好的效果 xff0c 当数据量较少 xff0c 更偏向于使用传统的机器学习模型 想办法从深度学习的方向构建模型 xff0c 使得模型在数据量较小的情况下也能取得较好效
  • SpringBoot整合MybatisPlus时“注入失败”的问题记录

    问题情景 xff1a 最近将几个小的Demo整合在一起 xff0c 其中项目A使用Mybatis项目B使用Mybatis plus 在正常的修改完application yml xff0c pom文件后尝试启动项目 xff0c 启动失败 报
  • VasSonic之流式拦截

    VasSonic之流式拦截 VasSonic框架用到了流式拦截和增量更新技术 xff0c 下面只简单介绍流式拦截 xff0c 详细参考 xff1a https github com Tencent VasSonic wiki 一 xff09
  • 全文搜索引擎 Elasticsearch 入门

    全文搜索属于最常见的需求 xff0c 开源的 Elasticsearch xff08 以下简称 Elastic xff09 是目前全文搜索引擎的首选 它可以快速地储存 搜索和分析海量数据 维基百科 Stack Overflow Github
  • Ubuntu16.04 安装,更新与卸载Docker CE

    Ubuntu16 04 安装 xff0c 更新与卸载Docker CE 污污老师 关注 2017 11 14 23 40 字数 1019 阅读 3079评论 0喜欢 1 Docker CE 17 09 操作系统要求 xff1a 一个64位的
  • 零基础学习OpenGL(八)--立方体贴图、天空盒、环境映射

    立方体贴图 将多个纹理组合起来映射到一张纹理上的一种纹理类型 xff1a 立方体贴图 Cube Map 立方体贴图 xff1a 一个包含了6个2D纹理的纹理 xff0c 每个2D纹理都组成了立方体的一个面 xff1a 一个有纹理的立方体 之
  • Centos7下VNC离线安装(个人纪录)

    Centos7下VNC离线安装 个人纪录 1 官网下载rpm包 下载地址 2 执行安装命令 xff1a rpm Uvh tigervnc server 1 8 0 17 el7 x86 64 rpm 3 检查安装情况 xff1a rpm q
  • thinclient_drives

    ubuntu上安装xrdp搭建远程桌面 xff0c 后面远程桌面是可以了 xff0c 但是用户目录下生出了一个thinclient drives文件夹 xff0c 无论是不是root都不能删除 xff0c 如果你有强迫症 xff0c 你就感
  • 解决虚拟机下的ubuntu不能上网的问题

    解决虚拟机下的ubuntu不能上网的问题 2017年09月25日 19 31 39 ray7777777777 阅读数 xff1a 3676 1 打开虚拟机VM 2 右键ubuntu 设置 网络适配器 选中NAT模式 xff1a 用于共享主
  • 云原生|kubernetes|rancher-2.6.4安装部署简明手册

    前言 rancher是一个比较特殊的开源的kubernetes管理工具 xff0c 特殊在它是一个名称为k3s的简单kubernetes集群 xff0c 而该集群是在kubernetes集群内的 rancher还可以在一个裸的仅具有dock
  • Arch安装TIM并解决无法输入中文的常见问题

    花了两个小时的时间解决linux tim无法输入中文的问题 xff0c 最后直接重装系统对比前后配置解决问题 我觉得这种事情应该是十分钟就能搞定的 xff0c 突然想起高中政治老师之前说过的一个问题 一个人的汽车坏了 xff0c 他去修车
  • Arch使用vs code编译调试C/C++

    Arch使用vs code编译调试C C 43 43 Windows平台下无脑下一步编译器就安装好了 xff0c 转到linux平台下基本没有无脑下一步这种操作 xff0c 这个时候就需要手动配置相关程序IDE 43 GCC xff0c 去