用Visual Studio 2019连接 WSL来编译调试C/C++项目

因为有作业要在Linux环境下写,用虚拟机直接卡成PPT,VS code又不会调试,就搞一下VS 2019吧。

环境

windows 10 + WSL(Ubuntu 18.04.4) + Visual Studio Community 2019

  • Linux 里要有C/C++环境(gcc等)
  • VS要有 适用于 Linux 开发的 Visual C++产品,如果没有的话在 Visual Studio Installer 好像可以下载(我不知道)

SSH

VS连接远程系统依靠SSH,所以需要在WSL里和Windows下都需要下载SSH

Windows下安装SSH

以管理员方式打开powershell

  1. 安装ssh
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
  1. 配置ssh
Start-Service sshd
# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'
# Confirm the Firewall rule is configured. It should be created automatically by setup. 
Get-NetFirewallRule -Name *ssh*
# There should be a firewall rule named "OpenSSH-Server-In-TCP", which should be enabled
# If the firewall does not exist, create one
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

完了之后输入ssh
在这里插入图片描述
就好了。

Ubuntu安装ssh

  1. 安装ssh客户端和服务器
sudo apt-get install openssh-client
$ sudo apt-get install openssh-server
  1. 启动ssh服务器
sudo /etc/init.d/ssh start
  1. 执行ps -aux | grep ssh,如果有
    在这里插入图片描述
    类似的 sshd 就好了
  2. 默认情况下,ssh不允许远程使用root账户连接,可以修改配置文件,主要修改一下几项
# 允许使用root账号远程登录
PermitRootLogin yes
# 允许使用密码登录
PasswordAuthentication yes
  1. 重启SSH
service ssh restart

VS2019连接WSL

新建一个项目,右上角“平台”选linux, 下面项目选“控制台应用”,第一次新建Linux的项目后,运行那就会提示连接远程系统,也可以点 工具 -> 选项 -> 跨平台 -> 连接管理器 -> 添加添加一个远程连接
在这里插入图片描述
点连接之后,如果主机名那报错,说明SSH无法连接,可能是本地或Linux服务没打开,如果用户名或密码报错,可能原因有:

  1. 密码错了
  2. SSH客户端没权限连接,可以使用普通用户连接或按上面的在Linux里配置PermitRootLoginyes
  3. 端口占用,修改SSH服务端(Linux)配置文件中的Port字段,换一个端口

配置好之后的调试工具就有了
在这里插入图片描述

调试项目

运行时没有报错,但好像也没有任何输出,这是应为控制台窗口随着程序运行结束会很快消失,所以在最后return 0处打断点调试就可以了。
在这里插入图片描述
最后运行产生的文件包括.out等会保存在用户家目录下projects目录下,可以在项目 -> 属性 -> 远程生产根目录/项目目录处修改
在这里插入图片描述

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

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

相关文章

系统移植的四大步骤

最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时…

display:flex

flex:弹性布局 常用属性介绍: flex-direction: column (设置主容器主轴方向) flex-flow: row wrap (第一个参数为flex-direction,第二个为flex-wrap) align-items: flex-start (设…

Linux(Ubuntu 19.10)下 Qt5 连接 MySQL(QMYSQL driver not loaded)

Linux(Ubuntu 19.10)下 Qt5 连接 MySQL 安装好 MySQL 和 Qt Qt 连接 MySQL 的代码 QSqlDatabase dQSqlDatabase::addDatabase("QMYSQL");//加载mysql驱动,这个字符串是固定的 d.setHostName("127.0.0.1"); d.setDatabas…

Wpf 数据绑定简介、实例1

简介:1.WPF绑定使用的源属性必须是依赖项属性,这是因为依赖项属性具有内置的更改通知支持,元素绑定表达式使用了Xaml扩展标记, WPF绑定一个控件是使用Binding.ElementName, 绑定非控件对象时使用Source,RelativeSource,DataContex…

【设计模式 04】代理模式

代理模式 代理模式( Proxy):为其他对象提供一种代理以控制对这个对象的访问。 参考:refactoringguru | proxy 什么是代理模式 有时候如果想要访问某个对象,但又没办法直接访问或不方便直接访问,可以使用代理模式,代理…

css 大于号 标签_CSS设计基础选择器篇

点击上方 Java项目学习 ,选择 星标 公众号重磅资讯、干货,第一时间送达前言:如果将CSS样式应用于特定的网页对象上,需要先找到目标元素。在CSS样式中执行这一任务的部分被称为选择器。1 标签选择器优点:为页面中同类型…

crontab 提示 command not found 解决方案

crontab 提示 command not found 解决方案 今天遇见一个问题,crontab的定时任务会报错:java command not found,但是手动执行脚本一直能成功。 猜想是环境变量的问题。 在crontab里添加个打印环境变量的任务: * * * * * echo $PAT…

【设计模式 05】工厂方法模式

工厂方法模式 define an interface or abstract class for creating an object but let the subclasses decide which class to instantiate. 参考: refactoringguru | factory-methodjavatpoint | factory-method-design-pattern博客园| 工厂方法 简单工厂的问题 …

LinkedList类源码浅析(二)

1、上一节介绍了LinkedList的几个基本的方法,其他方法类似,就不一一介绍; 现在再来看一个删除的方法:remove(Object o) remove方法接受一个Object参数,这里需要对参数做空与非空处理; 但是删除一个Object元…

2016OSC源创会年终盛典-综合技术专场-张小刚

2019独角兽企业重金招聘Python工程师标准>>> 综合技术专场 讲师/SPEAKERS 张小刚 网易云负载均衡项目负责人 《网易蜂巢负载均衡技术实践》从网易蜂巢中的实践出发,分享网易蜂巢负载均衡服务从无到有,从私有云到公有云过程中的技术实践。重点…

mysql 日期

数据类型 数据类型格式date YYYY-MM-DD datetime YYYY-MM-DD HH:MM:SS timestamp YYYY-MM-DD HH:MM:SS year YYYY 或 YY 具体实现的函数 1、now() 返回当前的日期和时间 SELECT NOW(); 2、curdate() 返回当前的日期 SELECT CURdate(); 3、curtime()返回当…

超完整的 Chrome 浏览器客户端调试大全

2019独角兽企业重金招聘Python工程师标准>>> 引言 “工欲善其事,必先利其器” 没错,这句话个人觉得说的特别有道理,举个例子来说吧,厉害的化妆师都有一套非常专业的刷子,散粉刷负责定妆,眼影刷负…

MySQL 为什么用索引,为什么是 B+树,怎么用索引

MySQL 索引 A database index is a data structure that improves the speed of operations in a table. Indexes can be created using one or more columns, providing the basis for both rapid random lookups and efficient ordering of access to records. 为什么需要索…

Servlet 生命周期、工作原理

Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器&…

【Go 并发控制】上下文 context 源码

Context 在 Go 服务中,往往由一个独立的 goroutine 去处理一次请求,但在这个 goroutine 中,可能会开启别的 goroutine 去执行一些具体的事务,如数据库,RPC 等,同时,这一组 goroutine 可能还需要…

iOS开发UI篇—模仿ipad版QQ空间登录界面

一、实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的设置 (1)设置第一个控制器和自定义的控制器类(登陆)关联 (2&#xff09…

oracle中scn(系统改变号)

系统scn: select checkpoint_change# from v$database; 文件scn: select name,checkpoint_change# from v$datafile; 结束scn: select name,last_change# from v$datafile; 数据文件头部scn…

三个数相减的平方公式_快收好这份小学数学公式大全!孩子遇到数学难题时肯定用得上...

必背定义、定理公式1.三角形的面积=底高2 公式 S= ah22.正方形的面积=边长边长公式 S= aa3.长方形的面积=长宽公式 S= ab4.平行四边形的面积=底高公式 S= ah5.梯形的面积&#xff1d…

add.attribute向前端传_前端知识-概念篇

1、一次完整的HTTP事务是怎样的一个过程?基本流程:a. 域名解析b. 发起TCP的3次握手c. 建立TCP连接后发起http请求d. 服务器端响应http请求,浏览器得到html代码e. 浏览器解析html代码,并请求html代码中的资源f. 浏览器对页面进行渲…

【数据库】一篇文章搞懂数据库隔离级别那些事(LBCC,MVCC)

MySQL 事务 文章比较长,建议分段阅读 后续如果有改动会在 Junebao.top 之前对事务的了解仅限于知道要么全部执行,要么全部不执行,能背出 ACID 和隔离级别,知其然但不知其所以然,现在觉得非常有必要系统学一下&#xff…