Ubantu 安装vscode配置c/c++环境

news2024/12/23 14:52:19

文章目录

  • 安装VSCode
      • 注意 snap包冲突
  • 安装C/C++编译环境
      • 注意 进程锁占用
  • 配置C++开发环境
    • 安装插件
    • 配置tasks.json
    • 配置c_cpp_properties.json
  • 配置调试环境
    • 配置 launch.json

安装VSCode

方式一:ubantu 软件里面直接安装
方式二:官网下载deb安装包https://code.visualstudio.com/

注意 snap包冲突

我在安装时,先从官网上下载了deb但是下到一半时中止了,然后在系统软件里面再安装Code时,报错:

code:status-code=409 kind=snap-change-conflict message=snap"code" has “install-snap”" change in progress

这个错误通常表示在你尝试安装 code 软件时,由于系统中已经有一个正在安装或正在更新的 snap 包而导致冲突。
我的解决方式是:
sudo snap changes
看系统中正在进行的 snap 操作。找到与 code 包相关的操作记录(通常以 install 或 refresh 开头),然后使用以下命令中止它:
sudo snap abort [change-id]
将 [change-id] 替换为你要中止的操作的ID。

如果你之前曾尝试安装 code 软件但未成功,则可能需要删除旧的安装包。
sudo snap list
列出当前安装的所有 snap 包。找到与 code 软件相关的包并使用以下命令删除它:
sudo snap remove [package-name]
将 [package-name] 替换为你要删除的包的名称。

在这里插入图片描述在这里插入图片描述

然后就能够重新安装 code 软件了。
在这里插入图片描述

安装C/C++编译环境

  1. 更新软件源: sudo apt-get update
  2. 安装 gcc 工具链: sudo apt-get install build-essential gdb
  3. 确认 gcc 安装成功: gcc -v

注意 进程锁占用

下载时,经常会有apt-get安装资源锁报错:
在这里插入图片描述解决方案有两种:
一种是删除对应的进程
一种是删除对应的锁文件

我懒得去查进程了,直接删除的锁文件:
在这里插入图片描述

配置C++开发环境

安装插件

  1. 打开VSCode。
  2. 按下快捷键 或点击侧边栏的 “Extensions” 搜索插件。
  3. 搜索并安装 C/C++ 相关插件。
    在这里插入图片描述4. 打开一个文件夹,创建测试文件helloworld.c
    在这里插入图片描述
#include <stdio.h>

int main(){
    printf("hello world");
    int a = 2;
    printf("%d",a);
    return 0;
}

配置tasks.json

  1. 配置.vscode下的tasks.json
    tasks.json 文件配置: tasks.json 用于告诉 VSCode 应该怎么编译源文件。
    可以从模版生成 tasks.json 文件,可以直接手动添加。
    在菜单栏点击配置任务,如图所示:
    在这里插入图片描述
    在弹出框中依次选择 “Create tasks.json file from template” - “others”。此时项目目录的 .vscode 目录下会出现 tasks.json 文件。
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc 生成活动文件",
            "command": "/usr/bin/g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

配置好 task.json 之后,就可以在 VSCode 的菜单栏一键进行项目构建工作(也可以使用快捷键 Ctrl-Shift-b )。
在这里插入图片描述
即生成了可执行文件

配置c_cpp_properties.json

  1. c_cpp_properties.json 文件配置:
    c_cpp_properties.json文件用于配置 C/C++ 相关信息,可以告诉VSCode 使用的编译器、查找 include 文件的路径以及 C 文件和 CPP 文件的解析标准等,帮助 VSCode 的自动代码分析工具 IntelliSense 进行语法检查。
    在 VSCode 中,在某个打开的 C++ 文件下,按下 Ctrl+Shift+P 键,选择 C/C++: Edit
    Configurations (JSON) 即可在 .vscode 下创建 c_cpp_properties.json 。
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

配置调试环境

配置 launch.json

.vscode 目录下的 launch.json 文件,用于配置 VSCode 的调试器。
在调试选项下,生成 launch.json 模版(也可以直接创建该文件)。
在这里插入图片描述
生成 launch.json 文件,在其右下角会有 Add Configurations 按钮。选择 C/C++: (gdb)
Launch 或 C/C++: (gdb) Attach (launch模式由 VSCode 来启动一个独立的具有 debug 模式的
程序;attach 模式附加于一个已经启动的程序)。
在这里插入图片描述

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "preLaunchTask": "C/C++: gcc 生成活动文件",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
            ],
            "miDebuggerPath":  "/usr/bin/gdb"
        }

    ]
}

然后添加断点,就可以调试文件了。
在这里插入图片描述

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

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

相关文章

面试Java岗老喜欢盯着JVM问,有那么多项目要调优吗?

面试Java岗老喜欢盯着JVM问&#xff0c;有那么多项目要调优吗&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给…

C++ 编程需要什么样的开发环境?

C 编程需要什么样的开发环境&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#…

资本主义的市场竞争?IBM总监Jerry Chow 谈量子计算的未来

​ 人物介绍&#xff1a;Jerry M.Chow博士在耶鲁大学取得物理博士学位。担任IBM量子系统总监&#xff0c;其研究重点是面向容错量子计算的多量子比特系统。他主要为IBM的量子系统路线图制定战略&#xff0c;与硬件团队领导者一起设定目标研究领域&#xff0c;同时也确保最佳的客…

llvm pass

pass们组合在一起&#xff0c;处理IR 而最后的目标代码生成阶段&#xff0c;会生成另一种MIR&#xff08;Machine IR&#xff09; PassManager管理这些pass pass处理IR之后会改变分析的情况&#xff0c;这些关于IR的信息由 AnalysisManager处理 1、pass &#xff08;1&…

重磅!30余所985高校全面取消博士统考!

2024年博士招生&#xff0c;又有“双一流”高校取消统考。 近日&#xff0c;各大高校正在陆续发布《2024年博士研究生招生简章》&#xff0c;其中南昌大学的博士招生方式引起了广泛关注。据悉&#xff0c;南昌大学将全面实行“申请—考核”制选拔方式&#xff0c;适用于直接攻…

中级职称原来有这么多用处!

中级工程师职称是工程技术人员职称中的一个级别&#xff0c;其作用可能因行业、地区和具体情况而异。一般来说&#xff0c;中级工程师职称具有以下作用&#xff1a; 1. 职业发展&#xff1a;中级工程师职称是工程技术人员职业发展中的一个重要里程碑&#xff0c;它可以证明持证…

大众点评评论采集软件使用教程

导出字段&#xff1a; 店铺ID 评论ID 发布时间 人均消费 评分 详情链接 点赞数 浏览数 评论数 最后更新时间 发布平台 推荐 评论详情 原始评论 图片数 图片链接 用户等级 用户名称 用户头像 VIP 私

“核弹级“攻击队视角下的监管痛点解决方案

痛点分析及解决方案 一、辖区企业资产分散且不透明 - 传统的监管体系中&#xff0c;政府监管单位往往面临着辖区企业资产分散且不透明的问题。 - 企业无法梳理自身资产&#xff0c;上报的资产台账无法涵盖全部自身资产 - 监管单位精力有限&#xff0c;无法保证辖区企业资产台账…

Three.js 镜面反射Reflector 为MeshStandardMaterial增加Reflector能力

效果效果官方案例 区别&#xff1a;官方的案例更像一个镜子 没有纹理等属性 也没有透明度修改 根据源码进行修改为 MeshStandardMaterial实现反射 使用案例 createReflector() {const plane this.helper.create.plane(2, 2);this.helper.add(plane.mesh);plane.mesh.rotat…

QT DAY6作业

1.学生管理系统&#xff0c;基于QT的数据库中数据表的增删改查 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QSqlDatabase> //数据库管理类 #include <QSqlQuery> //执行sql语句类 #include <QSqlRecord> //数据库记…

强化学习(二)多臂老虎机 “Multi-armed Bandits”——2

1、增量算法估计动作价值 由之前的内容可知&#xff0c;某一个动作被选择 n − 1 n-1 n−1 次后&#xff0c;该动作的价值估计值为 Q n ≐ R 1 R 2 ⋯ R n − 1 n − 1 Q_n\doteq\dfrac{R_1R_2\cdotsR_{n-1}}{n-1} Qn​≐n−1R1​R2​⋯Rn−1​​ 很明显&#xff0c;随着…

【AIGC-文本/图片生成视频系列-10】SparseCtrl:在文本生成视频的扩散模型中添加稀疏控制

目录 一. 项目概述 二. 方法详解 三. 应用结果 四.个人思考 由于扩散模型生成空间的不确定性&#xff0c;仅仅通过文本生成视频时&#xff0c;会导致模糊的视频帧生成。 今天解析的SparseCtrl&#xff0c;是一种有效解决上述问题的方案&#xff0c;通过带有附加编码器的时…

为啥4位单片机那么LOW,还没被淘汰?

我以为8位的51单片机已经够低端了&#xff0c;没想到竟然还有4位单片机&#xff01;它到底有什么优势&#xff1f;用在什么领域&#xff1f; 在刚开始学习单片机的时候&#xff0c;我一直以为用越高端的芯片就越牛逼。 而现实&#xff0c;公司做产品和我们单片机学习者&#xf…

12V充4.2V单节锂电池充电管理芯片

12V充4.2V单节锂电池充电管理芯片&#xff1a;高效、简单、实用的充电解决方案 随着智能设备的普及&#xff0c;电池充电管理已经成为一个热门话题。本文将介绍一款12V到4.2V*UIC9527单节锂电池充电管理芯片&#xff0c;它具有简单、高效、实用等特点&#xff0c;广泛应用于各…

spring boot学习第八篇:kafka

目录 1、安装kafka 1.1确认jdk是否安装OK 1.2下载kafka 1.3安装kafka 1.4验证kafka 2、连接kafka 3、在java中操作kafka 1、安装kafka 1.1确认jdk是否安装Ok java -version 1.2下载kafka wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-…

RTSP协议播放不兼容TPLINK摄像头的处理办法

报错的内容是Number of element invalid in origin string. 位置如图 数据内容是 "- 14665860 31787219 1 IN IP4 172.16.108.70" 两个数字中间多了一个空格&#xff0c;导致判断数据不等于6 所以数据输入的时候把中间的空格去掉一个即可。 if (array.Length …

【K8S 】K8S配置资源管理

一、Secret&#xff1a; 1、概念 用来保存密码。token&#xff0c;敏感的K8S资源 这类数据可以直接存放在镜像中&#xff0c;但是放在Secret中可以更方便的控制&#xff0c;减少暴露的风险 Secret&#xff1a;保存加密的信息 2、Secret类型&#xff1a; docker-registry&am…

如何有效构建进攻性的网络安全防护策略

文章目录 前言一、进攻性安全策略的价值&#xff08;一&#xff09;进攻性安全和防御性安全的区别&#xff08;二&#xff09;进攻性安全带来一种新的测试和防御的方法&#xff08;三&#xff09;进攻性安全策略也比防御性安全策略更具前瞻性 二、进攻性安全策略的类型&#xf…

Transformer 位置编码

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

LeetCode刷题---随机链表的复制

解题思路&#xff1a; 使用哈希表来解决该问题 因为题中要求是深拷贝 首先对原链表遍历&#xff0c;将原链表每个节点和新链表每个节点形成对应关系&#xff0c;存入到哈希表中&#xff0c;key为原链表的节点&#xff0c;value为新链表的节点。 之后重置辅助链表指向原链表头节…