C++环境配置【学习笔记(一)】

news2024/9/21 16:42:28

文章目录

      • 1、安装 VS Code 插件
      • 2、VS Code SSH远程连接Ubuntu主机
      • 3、编写py程序及 debug
      • 4、编写C++程序
      • 5、C++程序的 debug
      • 6、附录:vs code 中变量解释

C++开发工具:Visual Studio Code
下载地址: 地址
其中本文将介绍使用 VS Code ssh 远程连接 autodl 租赁 GPU 平台,示意图如下:
在这里插入图片描述

1、安装 VS Code 插件

根据下载地址下载并安装 VS Code,点击下图红色箭头指向的位置进行安装插件,

在这里插入图片描述

建议安装的插件如下:

  • 中文菜单:
    • MS-CEINTL.vscode-language-pack-zh-hans
  • SSH远程开发:
    • ms-vscode-remote.remote-ssh (安装这个下面2个会自动安装)
    • ms-vscode-remote.remote-ssh-edit
    • ms-vscode.remote-explorer
  • C++开发
    • ms-vscode.cpptools
  • python开发
    • ms-python.python
  • 代码补全
    • TabNine.tabnine-vscode
    • GitHub.copilot(收费)

2、VS Code SSH远程连接Ubuntu主机

A、点击下图红色箭头指向处
在这里插入图片描述

B、然后选择下图红框处

在这里插入图片描述

点击之后再选择如下图红框处:

在这里插入图片描述

C、注册一个 autodl 账号,我一般先开启 无卡模式运行,然后复制登陆指令,如下图,

在这里插入图片描述

复制登录命令之后,再选择 SSH 配置文件,我选择的配置文件如下图,

在这里插入图片描述

然后选择打开配置文件,

在这里插入图片描述

打开配置文件之后,可以更改主机名称,下次登录主机时直接选择 autodl03即可,

在这里插入图片描述
下一步,选择 linux,

在这里插入图片描述

D、然后再复制密码,

在这里插入图片描述

E、成功登录主机,然后就可以在远程主机上配置环境和安装插件了,

在这里插入图片描述

3、编写py程序及 debug

可以使用命令创建 py 文件,

touch python_demo.py

编写py代码:

sum = 0
for i in range(5):
    sum += i
print(sum)

可直接在命令行使用命令:python python_demo.py 运行 py 代码,下面着重讲一下如何使用 VSCode debug py程序,如下图,先点击最左边有虫子图标的位置,然后分别点击①、②,

在这里插入图片描述

上面②对应的 json 文件内容如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",  // 名称
            "type": "python",
            "request": "launch",
            // "program": "${file}", // 当前文件
            "program": "demo.py", // 指定文件
            "console": "integratedTerminal",
            "justMyCode": true // false表示可以进入第三方库(如Pytorch)里进行调试
        }
    ]
}

下一步,在如下图中按照图标分别点击即可完成对 py 代码的 debug,其中③和④的区别是,③是仅在当前 py 程序 跳转,而④可跳转到其他 py 程序或 py 包,

在这里插入图片描述

4、编写C++程序

创建 main.cpp,然后编写 C++ 代码:

#include <iostream>
using namespace std;

int main()
{
    int sum {0};
    for(int i = 0; i < 5; i++)
    {
        sum += i;
    }
    cout << "结果是:" << sum << endl;
    return 0;
}

在命令行使用 g++ main.cpp -o main生成可执行文件 main,在命令行输入 ./main 即可执行程序,如下图,

在这里插入图片描述

除了使用 g++ 编译程序之外,也可以使用VSCode的快捷键,依次点击 Terminal,Run Build Task…,或者使用快捷键:Ctrl+shift+B,会显示如下窗口,可以使用命令 which g++查看 g++ 的位置,然后再选择,
在这里插入图片描述
在这里插入图片描述

这里点击上图右边的齿轮,会在 .vscode 文件夹生成 tasks.json 文件,这里给出 tasks.json 文件的内容包括注释,

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: g++ 生成活动文件",
      "command": "/usr/bin/g++", // g++的路径
      "args": [
        "-fdiagnostics-color=always", // 颜色
        "-g",  // 调试信息
        "-Wall", // 开启所有警告
        "-std=c++14", // c++14标准
        "${file}", // 文件本身,仅适用于C++基础知识教学,无法同时编译所有文件
        // "${fileDirname}/*.cpp", // 文件所在的文件夹路径下所有cpp文件
        "-o", // 输出
        "${workspaceFolder}/release/${fileBasenameNoExtension}" // 文件所在的文件夹路径/release/当前文件的文件名,不带后缀
      ],
      "options": {
        "cwd": "${fileDirname}" // 文件所在的文件夹路径
      },
      "problemMatcher": [
        "$gcc"
      ],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "编译器: /usr/bin/g++"
    }
  ]
}

5、C++程序的 debug

需要确认主机有安装 gdb,否则无法完成 C++ 调试,安装命令:apt-get install gdb

通过 apt-get install gdb 如果报如下错误,则升级更新 apt,升级命令:apt-get update

在这里插入图片描述

先后点击①、②,如下图,

在这里插入图片描述

然后再点击,

在这里插入图片描述

这里给出 C++ 调试的 launch.json 文件的内容,需要注意2点,“program” 的内容和 task.json 的编译结果输出位置一致,“preLaunchTask” 和 tasks.json 的label 一致,因为 debug 的时候先编译后调试,

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg", // C++调试
            "request": "launch",
            "program": "${workspaceFolder}/release/${fileBasenameNoExtension}",  // 文件所在的文件夹路径/release/当前文件的文件名,不带后缀
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}", // 文件所在的文件夹路径
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            // "miDebuggerPath": "/usr/bin/g++",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++ 生成活动文件" // tasks.json的label
        },
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}", // 当前文件
            // "program": "demo.py", // 指定文件
            "console": "integratedTerminal",
            "justMyCode": true // false表示可以进入第三方库(如Pytorch)里进行调试
        }
    ]
}

调试成功的结果如下图,

在这里插入图片描述

6、附录:vs code 中变量解释

以:/home/Coding/Test/.vscode/tasks.json 为例

${workspaceFolder} :表示当前workspace文件夹路径,也即/home/Coding/Test

${workspaceRootFolderName}:表示workspace的文件夹名,也即Test

${file}:文件自身的绝对路径,也即/home/Coding/Test/.vscode/tasks.json

${relativeFile}:文件在workspace中的路径,也即.vscode/tasks.json

${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即tasks

${fileBasename}:当前文件的文件名,tasks.json

${fileDirname}:文件所在的文件夹路径,也即/home/Coding/Test/.vscode

${fileExtname}:当前文件的后缀,也即.json

${lineNumber}:当前文件光标所在的行号

${env:PATH}:系统中的环境变量

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

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

相关文章

自建田间作物场景杂草检测数据,基于YOLOv5[n/s/m/l/x]全系列参数模型开发构建杂草检测识别分析系统

在前文中我们已经开发实践了杂草相关检测&#xff0c;感兴趣可以自行移步阅读即可&#xff1a; 《自建数据集&#xff0c;基于YOLOv7开发构建农田场景下杂草检测识别系统》 《激光除草距离我们实际的农业生活还有多远&#xff0c;结合近期所见所感基于yolov8开发构建田间作物…

WebDAV之π-Disk派盘 +Polaris Office

推荐一款可以实现在Windows桌面PC,Mac,Android设备和iOS设备上同步的移动办公软件,还支持通过WebDAV添加葫芦儿派盘。Polaris Office是一款功能全面的办公自动化套件,软件集成了Word、Excel、幻灯片(PPT)、ODT等文档格式,并且可以完美兼容任何Microsoft Office,PDF,TXT或…

快速幂算法(数论)

1. 递归快速幂&#xff1a; pow(2,8)2^4 * 2^4 (2^2 * 2^2) * (.....) pow(2,7) 2^6*2 (2^3 * 2^3)*2 (......) 负数也是同样原理 2. 非递归快速幂&#xff1a; 将次方转为2进制&#xff1a;进行计算 以7的10次方为例&#xff1a; 每次计算a累乘 eg.第二位对应--->p…

Elasticsearch安装IK分词器

ik分词包 参考博客、参考博客 将下载好的zip包解压&#xff0c;生成一个ik文件夹 将ik文件夹移动到ES安装目录下的plugins文件夹下&#xff08;每台ES节点都要执行相同的操作&#xff09; 重启ES集群 坑

电力巡检/电力抢修行业解决方案:AI+视频技术助力解决巡检监管难题

一、行业背景 随着国民经济的蓬勃发展&#xff0c;工业用电和居民用电需求迅速增加&#xff0c;电厂、变电站、输电线路高负荷运转&#xff0c;一旦某个节点发生故障&#xff0c;对生产、生活造成巨大的影响。目前电力行业生产现场人员、设备较多&#xff0c;而生产监督员有限…

Jenkins入门级安装部署

前言 Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成。通常&#xff0c;项目中常用Jenkins作为编译打包项目的工具&#xff0…

Mysql JDBC反序列化漏洞

参考文章&#xff1a;梅子酒の笔记本 https://www.mi1k7ea.com/2021/04/23/MySQL-JDBC%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E/ 小白看得懂的MySQL JDBC 反序列化漏洞分析 - 先知社区 MySQL JDBC反序列化漏洞 [ Mi1k7ea ] MySQL JDBC 客户端反序列化漏洞分…

双11商品售价不再出错!金鱼电器:价格自动监控,全年节省人天365

价格已成为双11吸引消费者的“杀手锏”&#xff0c;很多人“趴”在网上想“捡便宜”。但对商家而言&#xff0c;在设置价格的同时&#xff0c;还需要对活动价格自检以防出现“羊毛产品”&#xff0c;对竞品价格监控以防销量下滑&#xff0c;对乱价经销商留证以防品牌形象受损……

应用案例|基于高精度三维机器视觉的检测汽车座椅应用

Part.1 项目背景 检测汽车座椅是一个复杂的应用场景&#xff0c;需要综合运用多种技术和算法来实现。在这个场景中&#xff0c;通过使用3D视觉技术来感知汽车座椅的位置、形状和特征&#xff0c;使用摄像头或激光扫描仪等设备来获取汽车座椅的三维信息。然后利用这些信息来准确…

Systemd服务内存占用高的处理

参考文章 ### https://blog.csdn.net/weixin_44821644/article/details/121095406## https://blog.csdn.net/c123m/article/details/124301104 现象 检查 操作系统是4C8G&#xff0c;systemd的内存使用率比较高。操作系统日志没看到异常。很多服务通过systemd托管 ## 检查有…

基于springboot实现乐校园二手书交易管理系统【项目源码+论文说明】计算机毕业设计

基于springboot实现乐校园二手书交易管理系统演示 摘要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括乐校园二手书交易管理系统的网络应用&#xff0c;在外国二手书交易管理系统已经是很普遍的方式&#xff0c;不过国内的…

用C++写个简单的程序表白老妈

后天就是老妈的生日了&#xff0c;我打算写一个简单的程序表白老妈子&#xff0c;来肉麻一下她。在实现的过程中&#xff0c;有不少我没学过的知识&#xff0c;这些知识我都会予以补充。 创建图形窗口 创建图形窗口要包头文件&#xff1a; #include<easyx.h> 这是简单…

WordPress主题模板 大前端D8 5.1版本完整开源版源码简洁大气多功能配置

源码测评&#xff1a;该模板官方已更新至5.2&#xff0c;但是这个5.1也是非常好用的&#xff0c;经测试所有页面均完好&#xff0c;推荐下载使用。 模板简介&#xff1a; 大前端D8 主题是一款非常牛逼的WordPress博客主题,响应式,功能齐全,支持手机,电脑,平板,非常适合做博客站…

vue项目,程序控制台不报错,但是也没有达到预期

敲代码时&#xff0c;有时控制台不报错&#xff0c;但是也不如预期那样展示 1&#xff0c;需要打断点&#xff0c;有可能是某个对象没有值&#xff0c;比如axios.js&#xff0c;如图所示&#xff1a; error里面不一定有msg&#xff0c;所以直接《error.msg.indexOf(cancelCach…

动手学深度学习—批量规范化(代码详解)

批量规范化 1. 训练深层网络2. 批量规范化层2.1 全连接层2.2 卷积层 3. 从零实现批量规范化层4. 使用批量规范化层的 LeNet 批量规范化&#xff08;batch normalization&#xff09;&#xff0c;可持续加速深层网络的收敛速度。 1. 训练深层网络 数据预处理的方式通常会对最终结…

Stable Diffusion AI绘图

提示词&#xff1a; masterpiece, best quality, 1girl, (anime), (manga), (2D), half body, perfect eyes, both eyes are the same, Global illumination, soft light, dream light, digital painting, extremely detailed CGI anime, hd, 2k, 4k background 反向提示词&…

微机原理:汇编指令集——调用传送指令、算术运算指令、转移类指令(详解)

文章目录 一、通用传送类指令1、数据传送指令2、堆栈操作指令 二、算术运算指令1、总图2、加减运算指令2.1 例子2.2 INC/DEC指令 3、比较指令 三、转移类指令1、无条件转移2、有条件转移2.1 无符号数条件转移指令2.2 有符号数条件转移指令2.3 例题一2.4 循环控制指令&#xff0…

【golang】Go中的切片slice和操作笔记,垃圾回收机制,重组 reslice ,复制和追加,内存结构

切片 文章目录 切片将切片传递给函数make() 创建一个切片new() 和 make()的区别多维切片bytes包for-range切片重组 reslice切片的复制和追加 字符串、数组和切片的应用获取字符串的某一部分字符串和切片的内存结构修改字符串中的某个字符字节数组对比函数搜索及排序切片和数组a…

非侵入式负荷检测与分解:电力数据挖掘新视角

电力数据挖掘 概述案例背景分析目标分析过程数据准备数据探索缺失值处理 属性构造设备数据周波数据模型训练 性能度量推荐阅读 主页传送门&#xff1a;&#x1f4c0; 传送 概述 摘要&#xff1a;本案例将根据已收集到的电力数据&#xff0c;深度挖掘各电力设备的电流、电压和功…

全网最全面最深入 剖析华为“五看三定”战略神器中的“五看”(即市场洞察)(长文干货,建议收藏)

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; &#xff08;本文摘自谢宁专著《华为战略管理法&#xff1a;DSTE实战体系》&#xff0c;欢迎购买&#xff09; 兵法有云&#xff1a;胜兵先胜而后求战&#xff0c;败兵先战而后求胜&#xff0c;所谓胜兵先…