Linux系统上安装VScode且配置C/C++环境

news2024/11/29 4:52:21

Linux系统给人的印象一直是命令行的形式,今天终于长了见识,其实Linux系统也可以像Windows系统一样,安装、使用VScode软件

  • 1 进入VScode官网下载VScode Linux安装版
  • 2 将下载到电脑上压缩包通过tcp指令传到Linux系统上
  • 3 在放置安装包的目录下通过终端命令行来进行VScode的安装
  • 4 Linux上查看VScode的安装路径
  • 5 Linux上打开VScode
  • 6 Linux上VScode插件安装
  • 7 设置Vscode在终端输出
  • 8 VScode环境配置(json文件的配置)
    • 8.1 可以直接套用的launch.json配置文件
    • 8.2 可以直接套用的tasks.json文件
  • 总结:

在这里插入图片描述

1 进入VScode官网下载VScode Linux安装版

VScode官方下载网站:https://code.visualstudio.com/download
注:下载什么版本的安装包,要根据自己的Linux系统的版本来选择。
在这里插入图片描述下载64位.deb的安装包:code_1.78.2-1683731010_amd64.deb
因为我的Linux是Ubuntu版本,因此下载的是.deb结尾的安装包

2 将下载到电脑上压缩包通过tcp指令传到Linux系统上

Windows与Linux系统实现文件互传的方法,见下面链接,用过的都说好【edog】
Windows与Linux系统实现文件互传(通俗易懂)https://blog.csdn.net/qq_42595610/article/details/130819486?spm=1001.2014.3001.5501
这里,我将安装包放在了/home/ubuntu/Downloads目录下(自定义即可)
在这里插入图片描述

3 在放置安装包的目录下通过终端命令行来进行VScode的安装

Linux终端输入:sudo dpkg -i code_1.78.2-1683731010_amd64.deb
在这里插入图片描述
显示以上结果说明安装成功

4 Linux上查看VScode的安装路径

Linux系统上完成VScode的安装之后,使用命令行的方式查看其安装路径:
Linux命令行输入:whereis code
回车之后显示:/usr/bin/code /usr/share/code,此路径便为VScode的安装路径

5 Linux上打开VScode

在Linux终端输入:code回车即可打开VScode
刚完成安装的VScode只是一个框框而已,里面没有任何拓展的插件,不支持代码提示、语法高亮、代码运行等功能

6 Linux上VScode插件安装

Linux上对于VScode的配置与Windows有很多相似之处,可以参考Windows下的安装与配置进行相应的操作,也可以先不看,后面的步骤中提到时,俺再提醒你一遍,损噻~Windows下VScode安装与配置

进入VScode插件官网
VScode插件官网:https://marketplace.visualstudio.com/search?target=VSCode&category=All%20categories&sortBy=Installs
选择想要的插件以后,点击Version History选择相应的版本进行下载
在这里插入图片描述
在这里插入图片描述
将所需要安装的插件全部下载到电脑上,并且放在随便在什么地方建个包放在一起,毕竟物以类聚嘛~
下图是自己的从插官网下载的一些VScode插件,为了在Linux上配置VScode运行C语言的环境
在这里插入图片描述
插件下载好了之后上传到Linux系统上的某目录下,这里以/home/ubuntu/Downloads目录为例。
在这里插入图片描述
上传至Linux之后进行解压
在这里插入图片描述
加压完成之后,按照小白专用VScode从安装到入门编写_Windows_C/C++中的离线插件安装方式,选择Install from VSIX进行离线插件安装
在这里插入图片描述
进入之后打开存放插件的目录,选中所有的插件并且选择install
在这里插入图片描述
安装成功
在这里插入图片描述
注 :上图没有安装CMake、CMakeTools,这两款插件在C/C++调试时会用到,按照上面步骤安装即可
到此VScode及其插件的安装就告一段落,现在我们创建一个新的C/C++工程,并且用VScode打开
在Linux下的目录中自定义一个可以存放工程的文件夹,例如:/home/ubuntu/Documents下面创建一个code_list目录,终端命令行进入该目录下,并且输入:code ./,就可以用VScode打开该目录
在这里插入图片描述
在该工程中,写一个打印hello world的程序来对安装的正确性进行测试:

在这里插入图片描述

7 设置Vscode在终端输出

打开右下角设置,输入code runner run in terminal,将Run In Terminal打勾即可
在这里插入图片描述

8 VScode环境配置(json文件的配置)

经过以上battle,总算可以运行代码了。现在还有最重要的一环,就是通过配置json文件来达到可以调试代码的目的。
我们点击工具栏【运行】-【启动调试】之后点击g++生成和调试活动文件,会自动生成launch.jsontasks.json文件。
注意:launch.jsontasks.json文件会被自动放在一个名为.vscode的文件中,一起存在于工程中
在这里插入图片描述

首先来看launch.json文件,该文件是专门用来运行和调试的配置文件。上面为我们生成的配置文件里面缺少很多配置,我们可以向里面添加配置,但也无需全部人工填写,往其中添加配置模板的方式有几种如下:

  1. 打开launch.json文件,右下角就有名为add configuration的button进行提示,直接点击此按钮,就会自动添加配置进launch.json文件中。
    在这里插入图片描述
  2. ctrl+shift+p打开搜索窗口,直接输入add configuration也可
  3. 菜单栏【运行】-【添加配置】也可
  4. 直接在默认生成的launch.json文件中的configurations标签下的[]中输入gdb回车即可生成配置模板

不过直接生成的配置模板需要我们手动配置的地方太多,直接粘贴一段别人写好的配置拿过来解读一下岂不是更好,何乐而不为呢,是不是爱卿?
下面我们来分析一下launch.json文件
注:launch.json文件的配置没有太多需要改动的地方,只需要关注以下两个地方即可

“program”:…
“preLaunchTask”:…

Linux下C/C++对与launch.json的配置与Windows下存在较大的差异,自己注意一下,俺就不分析了哈哈哈

{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
“version”: “2.0.0”,
“configurations”: [
    {
        "name": "g++ - 生成和调试活动文件",
        //"label":"Compile",
        "type": "cppdbg",
        "request": "launch",
        "program": "${fileDirname}/${fileBasenameNoExtension}",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${fileDirname}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
            {
                "description": "为 gdb 启用整齐打印",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            },
            {
                "description": "将反汇编风格设置为 Intel",
                "text": "-gdb-set disassembly-flavor intel",
                "ignoreFailures": true
            }
        ],
        "preLaunchTask": "C/C++: g++ 生成活动文件",
        "miDebuggerPath": "/usr/bin/gdb"
    }
	]
}

上述配置文件:
version:配置文件的版本
configurations:配置域
name:配置文件的名字
type:调试的类型
"request": "launch":配置文件的请求类型,有launch和attach两种
program:可执行文件的位置/路径
"args": []:主函数调用时传入的参数,为空
cwd:调试时的工作目录
preLaunchTask:调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应,一般为编译程序,c++为g++, c为gcc,采用cmake的多文件编译则为build
miDebuggerPath:调试器的路径。"miDebuggerPath": "/usr/bin/gdb"表示gdb调试的位置为: "/usr/bin/gdb"
"/usr/bin/gdb"这个gdb调试器文件目录一般不用改,因为在linux下用命令行安装gdb时默认是装在了这里

${workspaceRoot} 当前打开的文件夹的绝对路径+文件夹的名字

${workspaceFolder}当前程序的路径,.vscode路径

${file}当前打开正在编辑的文件名,包括绝对路径,文件名,文件后缀名

${fileBasename} 当前打开的文件名+后缀名,不包括路径

${fileBasenameNoExtension} 当前打开的文件的文件名,不包括路径和后缀名

${fileDirname} 当前打开的文件所在的绝对路径,不包括文件名

${fileExtname} 当前打开的文件的后缀名

8.1 可以直接套用的launch.json配置文件

对于简单的单个文件的调试其实有自动生成的json配置也够了,在Cmake产生可执行文件的调试过程中,就需要一些稍稍复杂的配置了

{
    "version": "2.0.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
           "program": "${workspaceFolder}/build/XXXX",
             //此处代码的含义为:加载CMake产生的可执行文件的绝对地址,build是指我们在CMake编译的时候通过会建一个
             //build目录来存放编译过程中产生的一些文件,包括产生的可执行文件, XXXX代表CMake编译产生的可执行文件
		     //当然在上面那个launch.json中因此可执行文件就在当前目录下,所以用自动生成的路径就可以
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask":"build",
            //调试CMake产生的可执行文件的时候选择使用build,其实单个.c文件也可以
            "miDebuggerPath": "/usr/bin/gdb"
            //这个gdb调试器文件目录一般是不用改的
            //因为你在linux下用命令行安装gdb时默认是装在这里的
        }
    ]
}

tasks.json文件:

{
	"tasks":[
		{
			"type":"cppbuild",
			"lable":"C/C++: g++ 生成活动文件",
			"command":"usr/bin/g++",
			"args":[
				  "-g",
      			  "${file}", 
                  "-o", 
        		  "${fileDirname}/${fileBasenameNoExtension}", 
       		      "-std=c++11",    //使用c++11
       		      "-lpthread"      //链接thread库
			],
			"options":{
				"cwd":"${fileDirname}"
			},
			 "problemMatcher": {
			 	"$gcc"
			 },
			 "group":{
			 	"kind":"build",
			 	"isDefault":true
			 },
			 "detail":"调试器生成的任务"
		}
	],
	"version":"2.0.0"
}

8.2 可以直接套用的tasks.json文件

tasks.json配置文件一般不需要进行大改,直接粘过来就可以用
tasks.json配置文件的存在可以保证一个功能:
我们调试过程中如果更改了代码,这个时候我们不需要去重新make最新的可执行文件,

{    
    "version": "2.0.0",
        "options": {
            "cwd": "${workspaceFolder}/build"
             //这里写的是build文件的绝对路径,build是我们在mcake可执行文件的时候所mkdir的新目录
             //这里放的是绝对路径
            //即:当前你的项目文件夹下的build文件夹的路径
        },
        "tasks": [
            {
                "type": "shell",
                "label": "cmake",
                "command": "cmake",
                "args": [
                    ".."
                ],
            },
            {
                "label": "make",
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "command": "make",
                "args": [
    
                ],
            },
            {
                "label": "Build",
                //这里的build文件与lauch.json文件中的"preLaunchTask"中的"build" 相同
                "dependsOrder": "sequence",//按照一列来执行
                "dependsOn":[
                    "cmake",
                    "make"
                ]
            }
        ],
    
    }

tasks.json中的label要与launch.json中的preLaunchTask相同

配置成功演示:
在这里插入图片描述

总结:

1、launch.json 和task.json 可以自动生成,不需要自己全部手敲
2、Linux和Windows上对于json文件的配置并非完全相同,需要注意
3、以上json配置目前来讲单个文件的调试是没有问题的,但是多文件的调试,以及CMake产生的可执行文件的调试不知道行不行喔,我还没试过呢
4、Linux上VScode所生成的可执行文件是带*文件,而且文件名是绿色的,而Windows上生成的可执行文件是.exe文件,不能将*结尾的可执行文件在Windows上面去调试的
5、完结撒花,后会有期~

Linux系统上CMake可执行文件的编译见下一篇

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

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

相关文章

java实现文档部分预览与全预览功能

这里使用的是kkFileView插件,部署在服务器上,使用其生成预览内容,官网地址是:kkFileView - 在线文件预览 下载地址为:kkFileView 4.1.0 版本发布,开源在线文件预览解决方案 - OSCHINA - 中文开源技术交流社…

ANR日志分析全面解析

一、概述 解决ANR一直是Android 开发者需要掌握的重要技巧,一般从三个方面着手。 开发阶段:通过工具检查各个方法的耗时,卡顿情况,发现一处修改一处。 线上阶段:这个阶段主要依靠监控工具发现ANR并上报,比…

linux(system V标准)进程间通信2

目录: 1.回顾上一节的代码 2.shmat、shmdt的使用 3.共享内存的大小为什么最好设置成4096字节的整数倍呢? 4.操作系统如何管理共享内存的 ----------------------------------------------------------------------------------------------------------…

SpringMVC04:数据处理及跳转

目录 一、跳转方式ModelAndView 二、ServletAPI 三、SpringMVC 四、数据处理:处理提交数据 1、提交的域名称和处理方法的参数名一致 2、提交的域名称和处理方法的参数名不一致 3、提交的是一个对象 五、数据显示到前端 1、通过ModelAndView 2、通过ModelM…

Nginx的使用和有关配置

🌱Nginx的基础使用和有关配置。 📫相关软件:链接地址 文章目录 Nginx目录结构Nginx基本运行原理Nginx的基本配置文件 Nginx目录结构 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件…

dstat 好用的可视化工具

大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步! 我的主页:早九晚十二 dstat 好用的终端工具 安装方法命令详解负载与CPU相关展示第一颗与第四颗cpu使用情况展示每秒的CPU时钟频率…

Elasticsearch:使用 Transformers 和 Elasticsearch 进行语义搜索

语义/矢量搜索是一种强大的技术,可以大大提高搜索结果的准确性和相关性。 与传统的基于关键字的搜索方法不同,语义搜索使用单词的含义和上下文来理解查询背后的意图并提供更准确的结果。 Elasticsearch 是实现语义搜索最流行的工具之一,它是一…

【运筹优化】元启发式算法详解:变邻域搜索算法(Variable Neighborhood Search,VNS)+ 案例讲解代码实现

文章目录 一、介绍二、基本方案三、一些扩展四、在VNS内改变配方4.1 基于变邻域的公式空间搜索4.2 变公式搜索 五、原始对偶VNS六、求解混合整数线性规划的VNS七、连续全局优化的可变邻域搜索八、可变邻域编程(VNP):自动编程的VNS九、Discovery Science十、总结十一、案例讲解&…

如何视频转语音?想知道视频转语音工具怎么用?

在教育、培训等领域中,有时候需要将讲解视频转化为文字来提供给学生反复阅读学习。那么,小伙伴们,你们知道怎样视频转语音吗?其实我们可以借助一些视频转语音的软件帮助我们实现视频转语音操作。这篇文章就给大家分享几个非常好用…

PHP学习笔记第二天

前言 作者简介:不知名白帽,网络安全学习者。 博客主页:不知名白帽的博客_CSDN博客-网络安全,CTF,内网渗透领域博主 网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan 目录 PHP类型比较 和 PHP中比较0、false、null …

基于SSM的酒店管理系统代码数据库文件和LW

框架:SSM 数据库:MySQL 语言:Java 下载链接: https://download.csdn.net/download/yw1990128/87853243 B站演示链接: 基于SSM框架的酒店管理系统_哔哩哔哩_bilibili 1.1 课题研究背景及意义 随着我国改革开放的不…

hutool文件导出

hutool文件导出 需求:管理员设置会议,参加会议会根据管理员设置的会议要求,用户参加会议填写相关数据,并且生成一个动态的excel数据并导出 示例: 每场都可以自定义报名字段 根据需求与前端约定 字段名称(n…

通用读写仲裁模块(FPGA实现)

当涉及多个模块向同一个模块进行读写操作、向一个半双工模块请求读写,甚至综合一下,多个模块向一个半双工模块发起读写请求,那就要涉及读写仲裁。因为最近做的项目中涉及的读写仲裁太多了,所以就想还是要写一个通用的读写仲裁模块…

网络协议系统学习

网络为什么要分层? 因为是个复杂的程序就要分层 可以把网络包想象成一个buffer或者一块内存,是有格式的。同时,想象自己是一个处理网络包的程序,而且这个程序可以跑在电脑/服务器/路由器/交换机上,自己有很多网口&am…

抖音seo优化源码搭建/搜索排名系统,技术理论分析搭建中。

抖音seo系统源码SaaS+源码私有化部署搭建,抖音seo源码,抖音seo系统源码,抖音seo系统搭建部署,抖音已经成为了当今最为流行的短视频平台之一,拥有着庞大的用户群体和海量的视频资源。对于一些商家或者运营者…

26岁,几乎零基础,想从基础学习渗透测试该如何进行?

要成为一名渗透测试员,想从基础学习需要先掌握下面这3块(文末有相关自学资源推荐):1、学习硬件和网络 渗透测试主要涉及网络和部分涉及硬件。 2、操作系统和系统架构 操作系统和系统架构在渗透测试中起着关键作用。系统操作涉及x…

笔试强训6

作者:爱塔居 专栏:笔试强训 作者简介:大三学生,希望和大家一起进步! 1.下列关于ThreadLocal的描述中,错误的是() A.ThreadLocal采用线程隔离的方式存放数据,可以避免多线…

社区网格化管理系统

在传统的城市管理过程中存在的问题: 1、问题发现不及时,被管理对象不清楚。 2、管理部门职责不清,协调成本高。 3、城市管理整体情况缺乏数据支撑。 4、基层力量薄弱。 凡尔码搭建社区网格化管理系统依托统一的城市管理以及数字化的平台&…

Codeforces Round 875 (Div. 2)(A—D)

文章目录 A. Twin Permutations1、分析2、代码 B. Array merging1、分析2、代码 C. Copil Copac Draws Trees1、分析2、代码 D. The BOSS Can Count Pairs1、分析2、代码 A. Twin Permutations A. Twin Permutations 1、分析 作者这里的构造方法是让最终的数组满足&#xff…

linux安装jdk8

1.下载jdk8 https://www.oracle.com/java/technologies/downloads/#java8 2.上传jdk (1)将jdk源码包,上传到/usr/local (2)进入上传jar包目录 [rootiZ2ze7vthdl3oh0n0hzlu7Z ~]# cd / [rootiZ2ze7vthdl3oh0n0hzlu…