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。这样更能够无缝迁移并适配国内企业的真实研发环境。

安装wsl1环境

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

安装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/ c o m m i t i d ( v s c o d e 的 c o m m i t i d )目录下,否则你要手动下载 : h t t p s : / / u p d a t e . c o d e . v i s u a l s t u d i o . c o m / c o m m i t : {commitid}(vscode的commitid)目录下,否则你要手动下载:https://update.code.visualstudio.com/commit: commitidvscodecommitid)目录下,否则你要手动下载:https://update.code.visualstudio.com/commit:{commit_id}/server-linux-x64/stable(注意把:${commit_id}替换成对应的Commit ID。
    然后根据提示更改相应文件的执行权限,直至成功即可。

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

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

如何编译、运行、debug

如何构建一个模块级项目

参考&感谢

  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系统

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

要我说,鹅蛋脸才是YYDS!

在国漫的海洋中&#xff0c;女性角色的设定总是千变万化。她们或温婉如水&#xff0c;或刚烈如火&#xff0c;但总有一种难以言喻的东方美贯穿其中。个人比较喜欢玄机科技他们家的审美和建模&#xff0c;特别是那些拥有鹅蛋脸型的角色&#xff0c;她们往往给人以柔和亲切的第一…

『51单片机』蜂鸣器

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

PHP+python高校教务处工作管理系统q535p

开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp/Laravel 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 运行环境:phpstudy/wamp/xammp等 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方…

Linux上管理文件系统

Linux上管理文件系统 机械硬盘 机械硬盘由多块盘片组成&#xff0c;它们都绕着主轴旋转。每块盘片上下方都有读写磁头悬浮在盘片上下方&#xff0c;它们与盘片的距离极小。在每次读写数据时盘片旋转&#xff0c;读写磁头被磁臂控制着不断的移动来读取其中的数据。 所有的盘片…

vite.config.js

Vue3vite vite和webpack区别&#xff1f; 1.vite服务器启动速度比webpack快&#xff0c;由于vite启动的时候不需要打包&#xff0c;也就无需分析模块依赖、编译&#xff0c;所以启动速度非常快。当浏览器请求需要的模块时&#xff0c;再对模块进行编译&#xff0c;这种按需动态…

日历插件fullcalendar【前端】

日历插件fullcalendar【前端】 前言版权开源推荐日历插件fullcalendar一、下载二、初次使用日历界面示例-添加事件&#xff0c;删除事件 三、汉化四、动态数据五、前后端交互1.环境搭建-前端搭建2.环境搭建-后端搭建3.代码编写-前端代码fullcalendar.htmlfullcalendar.js 4.代码…

问题解决:写CSDN博文时图片大小不适应,不清晰,没法排版

项目环境&#xff1a; Window10&#xff0c;Edge123.0.2420.65 问题描述&#xff1a; 当我在CSDN写博文的时候&#xff0c;会经常插入一些图片&#xff0c;但有时候我插入的图片太大了&#xff0c;影响了整体排版。 比如我加入了一张图片&#xff0c;就变成了下面这个样子&…

Compose 中状重组

一、状态变化 1.1 状态变化是什么 根据上篇文章的讲解&#xff0c;在 Compose 我们使用 State 来声明一个状态&#xff0c;当状态发生变化时&#xff0c;则会触发重组。那么状态变化是指什么呢&#xff1f; 下面我们来看一个例子&#xff1a; Composable fun NumList() {val…

【深度学习|Pytorch】torchvision.datasets.ImageFolder详解

ImageFolder详解 1、数据准备2、ImageFolder类的定义transforms.ToTensor()解析 3、ImageFolder返回对象 1、数据准备 创建一个文件夹&#xff0c;比如叫dataset&#xff0c;将cat和dog文件夹都放在dataset文件夹路径下&#xff1a; 2、ImageFolder类的定义 class ImageFol…

C# WPF编程-元素绑定

C# WPF编程-元素绑定 将元素绑定到一起绑定表达式绑定错误绑定模式代码创建绑定移除绑定使用代码检索绑定多绑定绑定更新绑定延时 绑定到非元素对象Source属性RelativeSource属性DataContent属性 数据绑定是一种关系&#xff0c;该关系告诉WPF从源对象提取一下信息&#xff0c;…

296个地级市GDP相关数据集(2000-2023年)

01、数据简介 GDP&#xff0c;即国内生产总值&#xff08;Gross Domestic Product&#xff09;&#xff0c;是指一个国家或地区所有常住单位在一定时期内生产活动的最终成果。 名义GDP&#xff0c;也称货币GDP&#xff0c;是指以生产物品和劳务的当年销售价格计算的全部最终产…

OpenHarmony实战:CMake方式组织编译的库移植

以double-conversion库为例&#xff0c;其移植过程如下文所示。 源码获取 从仓库获取double-conversion源码&#xff0c;其目录结构如下表&#xff1a; 表1 源码目录结构 名称描述double-conversion/cmake/CMake组织编译使用到的模板double-conversion/double-conversion/源…

南京大学提出用于大模型生成的动态温度采样法,简单有效!

在自然语言处理&#xff08;NLP&#xff09;的领域&#xff0c;大语言模型&#xff08;LLMs&#xff09;已经在各种下游语言任务中展现出了卓越的性能。这些任务包括但不限于问答、摘要、机器翻译等。LLMs的强大能力在于其生成的文本质量和多样性。为了控制生成过程&#xff0c…

力扣由浅至深 每日一题.22 移除链表元素

迄今为止的生命里 —— 24.4.4 移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2…

【子集回溯】Leetcode 78. 子集 90. 子集 II

【子集回溯】Leetcode 78. 子集 90. 子集 II 78. 子集90. 子集 II ---------------&#x1f388;&#x1f388;78. 子集 题目链接&#x1f388;&#x1f388;------------------- 78. 子集 class Solution {List<List<Integer>> result new ArrayList<>()…

基于约束求解器对“火影忍者Online”进行智能布阵

文章目录 1. 游戏背景2. 确定决策边界3. 布阵数据3.1 追击状态3.2 角色信息3.3 个性化要求 4. 智能布阵模型4.1 主要的决策变量4.2 约束条件&#xff08;含辅助决策变量&#xff09;4.3 目标函数及求解 1. 游戏背景 今天将以“火影忍者Online”为案例&#xff0c;写一个智能布…

STM32工程 如何设置堆栈大小(Heap和Stack)

方法1&#xff1a;通过CubeMX、CubeIDE 配置 方法2&#xff1a;直接在启动文件中修改 &#xff08;适合所有Keil工程&#xff09; Heap、Stack的值大小&#xff0c;不管使用哪种开发环境&#xff0c;它俩都肯定在启动文件中。 可以通过CtrlF&#xff0c;搜索: Heap&#xff0…

【Linux】从零认识文件操作

送给大家一句话&#xff1a; 要相信&#xff0c;所有的不美好都是为了迎接美好&#xff0c;所有的困难都会为努力让道。 —— 简蔓《巧克力色微凉青春》 开始理解基础 IO 吧&#xff01; 1 前言2 知识回顾3 理解文件3.1 进程和文件的关系3.2 文件的系统调用openwrite文件 fd 值…

STL常用容器(2)---vector容器

1.1 vector基本概念 功能&#xff1a; vector数据结构和数组非常相似&#xff0c;也称为单端数组 vector与普通数组区别&#xff1a; 不同之处在于数组是静态空间&#xff0c;而vector可以动态扩展 动态扩展&#xff1a; 并不是在原空间之后的续接的新空间&#xff0c;而…

如何从 Android 和 iPhone 中的 SIM 卡恢复已删除的联系人 [新]

在手机上&#xff0c;我们经常添加联系人&#xff0c;而很少关心联系人是存储在SIM卡中还是手机中。当我们错误删除SIM卡联系人&#xff0c;或者不当取出插入的SIM卡插入新手机时&#xff0c;那些因业务需要而添加的联系人就会消失。这可能会令人沮丧和困惑。因此&#xff0c;您…