vscode + wsl1 搭建远程C/C++开发环境

记录第一次搭建环境过程。

如何选择开发环境

搭建C/C++开发环境有很多种方式,如

  1. MinGW + vscode(MinGW 是GCC的Windows版本,本地编译环境)
  2. SSH隧道连接 + vscode(远程Linux主机)
  3. wsl + vscode(远程Linux环境)
  4. CLion(Jetbrains开发的C/C++ IDE,没错就是开发idea、Pycharm的那个捷克公司。自带MinGW环境)
  5. visual studio(微软开发的C/C++ IDE)

选择 wsl + vscode 其实非常不适合小白折腾,但是考虑到国内的研发环境(内网)与习惯(总喜欢白嫖),那开源方案肯定是首选了,所以1、2、3方案其实是最适合的(毕竟4、5要收费嘛,老板怎么可能舍得出钱🤣)。由于这里是自己学习,以及为了更愉快方便的学习Linux,选择了 wsl + vscode,
其实也可以选择SSH隧道连接 + vscode(远程Linux主机),但装个虚拟机,或者买个服务器多不划算🤣,故直接梭哈 wsl + vscode。这样更能够无缝迁移并适配国内企业的真实研发环境。

关于编译器的选择

C/C++的编译器目前有两个主流的软件:GCC 和 clang。有很多人说 clang 好,有很多人说 GCC 好,也有人说二者各有千秋。那么在实际开发环境中该如何选择呢?

  • GCC vs Clang 该如何选择?
  • GCC vs Clang 有何区别

个人认为喜欢哪个用哪个,我这边用的是GCC。

安装 wsl1

两种安装方式,一种简单(会默认安装到C盘),一种灵活。

快捷安装

  1. windows 打开如下设置
  2. 打开 Microsoft Store(微软商城),搜索 Ubuntu,找到 Ubuntu 20.04 LTS,点击获取等待下载完成
  3. 下载完成后,设置用户名或密码,设置完后,安装Ubuntu系统完成

自定义安装

上面的安装方式会默认安装到C盘,若不想安装到C盘可以通过以下方式安装。
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual

安装gcc

  1. 进入windows命令行,键入wsl,进入Linux shell。
  2. 执行如下命令,把原来的apt源重命名为sources.list.bak,将阿里云的源作为apt默认使用的源
mv -f /etc/apt/sources.list /etc/apt/sources.list.bak
cat > /etc/apt/sources.list<< EOF
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
EOF
  1. 然后 sudo apt-get update ,更新apt 镜像信息。
  2. 再然后 sudo apt-get install build-essential ,一键安装 包括 gcc, g++, 和make。
  3. 再安装手册页(关于如何使用 GNU/Linux 进行开发) sudo apt-get install manpages-dev
  4. 验证 GCC 编译器的安装是否成功,使用gcc --version命令。打印 GCC 版本。
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.3) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  1. 安装gdb sudo apt-get install gdb

在vscode上搭建远程开发环境

  1. 首先就是下载宇宙最强编辑器 vscode。

  2. 然后安装各种插件,首当其冲就是wsl,安装好之后在左侧导航栏有个远程连接图标,点击它就能连接到ubuntu环境了。

    这里默认是在外网情况下,如果你在内网,可能会下载vscode-server失败
    ,在网络无问题时,这个东西下载解压后会自动放到 .vscode-server/bin/{commitid}(vscode的commitid)目录下,否则你要手动下载:https://update.code.visualstudio.com/commit:{commit_id}/server-linux-x64/stable(注意把:${commit_id}替换成对应的Commit ID。
    然后根据提示更改相应文件的执行权限,直至成功即可。

    .vscode-server的目录在C:\Users{用户名}\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LocalState\rootfs\home{用户名}下

  3. 安装cmake、c/c++、git 等相关插件

    这玩意待后续记录,研究下哪种方式编译运行调试更好些

如何构建一个模块级项目

一个很基本的项目结构如下
src 存放源码,include 定义要用到的头文件

.CProject
├── .vscode
│   ├── c_cpp_properties.json  # C/C++插件(UI)配置的json文件,暂时不知道有什么用
│   ├── launch.json  # 用来配置gdb,也就是调试时的配置
│   └── tasks.json  # 用来配置gcc,也就是编译时的配置
├── include
│   ├── api.h
│   └── type.h
└── src└── main.c

launch.json 的配置

{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "gcc - Build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "C/C++: gcc build active file","miDebuggerPath": "/usr/bin/gdb"}]
}

tasks.json 的配置

{"tasks": [{"type": "cppbuild","label": "C/C++: gcc build active file","command": "/usr/bin/gcc","args": ["-g", // 使用-g选项编译,会包含完整的调试信息,包括变量名、函数名、行号等// "${file}","${workspaceFolder}/*.c", // 编译工作目录下所有.c文件"-I","${workspaceFolder}/include", // -I选项,跟上一个路径,该路径告诉编译器在哪里搜索头文件"-o", // 用于指定生成的可执行文件的名称"${fileDirname}/${fileBasenameNoExtension}"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},// 运行或调试文件时,系统会启动两个终端,一个是用于显示编译任务,另一个是//用于执行调试命令并显示程序运行结果。但是很多时候前一个终端没有显示的必要,//可以将其设置为只在编译失败时显示,如下,reveal = silent:"presentation": {"echo": true,"reveal": "silent","focus": false,"panel": "shared","showReuseMessage": true,"clear": false},"detail": "Task generated by Debugger."}],"version": "2.0.0"
}

如何对项目进行编译、运行、debug

单文件编译运行调试

运行快捷键:ctrl + f5
debug 快捷键: f5

多文件编译运行调试

1.cmake 生成 makefiles
2.make 编译
3.调试

FAQ & 感谢 & 参考

  1. 如何在 Ubuntu 20.04/22.04 上安装 GCC 编译器?

  2. ubuntu20.04 apt 安装报 E: Unable to correct problems, you have held broken packages.

  3. gcc 所有releases版本

  4. win10如何开启wsl系统?

  5. 无法写入文件"vscode-remote://wsl+ubuntu-怎么办?

  6. 编译运行时终端老打印[1] + Done “/usr/bin/gdb“ --interpreter=时怎么办?

    在launch.json中 configurations 配置中加入这一行
    “miDebuggerArgs”: “-q -ex quit; wait() { fg >/dev/null; }; /usr/bin/gdb -q --interpreter=mi”,

  7. vscode配置参考

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

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

相关文章

Axios网络请求

Axios网络请求主要用于前后端请求&#xff0c;前后端分离时前端需要通过url请求后端的接口&#xff0c;并且处理后端传过来的数据。 Axios官网教程 安装 npm install axios在main.js导入 import axios from axios;//声明一个http变量&#xff01;&#xff01;&#xff01…

linux安装maven和git

https://maven.apache.org/download.cgi 下载apache-maven-3.9.6-bin.tar.gz 创建文件夹 mkdir maven chmod 777 maven 解压 tar zxvf apache-maven-3.9.6-bin.tar.gz vim /etc/profile #文件添加以下内容 maven environment export M2_HOME/data/maven/apache-maven-3.9.6 …

从零开始的LeetCode刷题日记:242. 有效的字母异位词

一.相关链接 题目链接&#xff1a;242. 有效的字母异位词 二.心得体会 这是一道很简单的哈希表的题目&#xff0c;因为只涉及了26个字母的映射&#xff0c;所以完全可以用数组来解决。 三.代码 class Solution { public:bool isAnagram(string s, string t) {int length_s…

初步了解Zookeeper

目录 1. Zookeeper定义 2. Zookeeper工作机制 3. Zookeeper特点 4. Zookeeper数据结构 5. Zookeeper应用场景 5.1 统一命名服务 5.2 统一配置管理 5.3 统一集群管理 5.4 服务器动态上下线 5.5 软负载均衡 6. Zookeeper 选举机制 6.1 第一次启动选举机制 6.2 非第一…

Linux,使用魔搭modelscope下载ChatGLM3-6B-32K大模型

1.进入命令行 2.pip安装modelscope pip install modelscope 3.进入python python 4.引入snapshot_download from modelscope import snapshot_download 5. 下载模型&#xff0c;cache_dir是大模型的保存路径 model_dir snapshot_download("ZhipuAI/chatglm3-6b-3…

分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测

分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测 目录 分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述…

【Python数据分析】让工作自动化起来,无所不能的Python

这里写目录标题 前言一、Python是办公自动化的重要工具二、Python是提升职场竞争力的利器三、Python是企业数字化的重要平台四、Python是AI发展的重要通道之一编辑推荐内容简介作者简介前言读者对象如何阅读本书目录 前言 随着我国企业数字化和信息化的深入&#xff0c;企业对…

实施工程师必会的市面上常用的系统

1.WMS系统 WMS系统指的是"Warehouse Management System"&#xff0c;即仓库管理系统。它是一种软件工具或平台&#xff0c;用于管理和优化仓库内的物流和库存操作。WMS系统通常提供各种功能和工具&#xff0c;以帮助仓库管理者有效地管理仓库内的库存、货物流动和工作…

大屏可视化展示平台解决方案(word原件获取)

1.系统概述 1.1.需求分析 1.2.重难点分析 1.3.重难点解决措施 2.系统架构设计 2.1.系统架构图 2.2.关键技术 2.3.接口及要求 3.系统功能设计 3.1.功能清单列表 3.2.数据源管理 3.3.数据集管理 3.4.视图管理 3.5.仪表盘管理 3.6.移动端设计 3.1.系统权限设计 3.2.数据查询过程设…

【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器

【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器 文章目录 【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器一、介绍二、联系工作三、方法四、实验结果 Multi-class Token Transformer for Weakly Supervised Semantic Segmentation 本文提出了一种新的基于变换…

ActiveMQ + MQTT 集群搭建(docker版本)

文章目录 前言一、docker方式部署1.创建挂载目录2.分别修改三个配置文件&#xff08;虚机配置第三点一致&#xff09;&#xff0c;如下&#xff1a;3.容器启动&#xff1a;4.集群验证 总结 前言 上一篇文章已经总结了 ActiveMQ MQTT 集群搭建&#xff08;虚机版本&#xff09…

ONERugged车载平板电脑厂家丨工业车载电脑优势体现丨3年质保

作为现代社会中必不可少的出行工具&#xff0c;汽车不仅仅是代步工具&#xff0c;更是我们生活中的重要一部分。而在如此多功能的汽车内&#xff0c;一款高可靠性、适应不同行业应用的车载平板电脑成为了当下的热门选择。ONERugged车载平板电脑以其卓越的品质和强大的功能而备受…

Java前置一些知识

文章目录 搭建Java环境安装path环境变量Java技术体系 Java执行原理JDK组成跨平台Java内存分配 IDEA管理Java程序 搭建Java环境 安装 oralce官网下载 JDK17 Windows 傻瓜式的点下一步就行&#xff0c;注意&#xff1a;安装目录不要有空格、中文 java 执行工具 javac 编译工具…

MWeb Pro For Mac v4.5.9 强大的 Markdown 软件中文版

MWeb 是专业的 Markdown 写作、记笔记、静态博客生成软件&#xff0c;目前已支持 Mac&#xff0c;iPad 和 iPhone。MWeb 有以下特色&#xff1a; 软件下载&#xff1a;MWeb Pro For Mac v4.5.9 软件本身&#xff1a; 使用原生的 macOS 技术打造&#xff0c;追求与系统的完美结合…

为什么需要网络切片?

网络切片是电信领域的一个突破性概念&#xff0c;它允许将物理网络基础设施划分为多个虚拟网络&#xff0c;称为切片。每个切片作为一个独立的网络运行&#xff0c;拥有自己的专用资源和定制的特性&#xff0c;满足不同应用、行业或用户的特定需求。 将网络切片视为在共享物理…

Linux云计算之Linux基础3——Linux系统基础part-2

1、终端、shell、文件理论 1、终端 终端(terminal)&#xff1a;人和系统交互的必要设备&#xff0c;人机交互最后一个界面&#xff08;包含独立的输入输出设备&#xff09; 物理终端(console)&#xff1a;直接接入本机器的键盘设备和显示器虚拟终端(tty)&#xff1a;通过软件…

富格林:堤防交易陷阱安全做单交易

富格林悉知&#xff0c;现货黄金市场是一个包容性很强的市场&#xff0c;因为它有非常方便的交易规则。投资者可在市场以不同的交易方式来获取盈利&#xff0c;但同时需注意的是&#xff0c;市场也存在一定的交易陷阱&#xff0c;要注意的提高辨别能力&#xff0c;谨防落入陷阱…

数据绑定多级对象属性时的报错解决

数据绑定多级对象属性时的报错解决 &#xff08;1&#xff09;例子如下&#xff1a; &#xff08;2&#xff09;当syncObjForm被后台数据赋值时&#xff0c;会产生报错&#xff1a; &#xff08;3&#xff09;原因就是&#xff1a; 模板在渲染时&#xff0c;读取对象中的某个…

TensorRT从入门到了解-学习笔记(待续)

b站TensorRT官方教程学习笔记 目录 0.简述1. Part1 TensorRT 简介1.1 TensorRT 简介1.1.1 TensorRT基本特性和用法1.1.2 TensorRT基本流程1.1.3 TensorRT上搭建模型方法1.1.3.1 Workflow:使用TensorRT API搭建1.1.3.1.1 Logger日志记录器1.1.3.1.2 Builder引擎构建器1.1.3.2 Wo…

普通人怎么赚钱?2024普通人做什么好?2024创业项目小成本!2024创业新项目新商机!2024做什么行业前景好?

普通人真的想赚钱&#xff0c;必须得去赚看得见的钱。什么是看得见的钱&#xff1f;打个比方卖一份炒粉&#xff0c;成本是三块&#xff0c;卖十块钱&#xff0c;一天卖出去100份&#xff0c;那一天就赚700块钱&#xff0c;而不是去跟人合伙&#xff0c;你连钱都没赚到&#xf…