vs2019开发Linux跨平台工具,VS2019 C++的跨平台开发——Linux开发

前言

由于前段时间正好买了一个服务器来跑Tensorflow的推理模型,所以借这个机会把Linux的开发也一并补上。

先声明我的服务器是Ubuntu16.04,下面文章的内容也是基于Ubuntu16.04的。为什么标题要写Linux呢?原因是我也开发过Raspbian(Debian)和CentOS,这些系统除了安装软件插件命令有些变化以外,开发过程并没有什么不同,应该可以通用。

这部分内容我认为微软的官方文档已经写的非常全面了,下面文章我就多展示图片,少写字,详细参看微软的官方文档。

官方文档: https://docs.microsoft.com/en-us/cpp/linux/?view=vs-2019 英文

https://docs.microsoft.com/zh-cn/cpp/linux/?view=vs-2019 中文

正文

1. 增加Linux的工作负载

先打开Visual Studio Installer

0b72bd0f138750045671378bb0cba303.png

选中“使用C++的Linux开发”

d0766cf3c1d5d2fb09d206e3fac98ebc.png

点击修改,等待安装结束。

2. 创建LinuxC++项目

698116f7111f2a21514a7c59a9d14ad8.png

选择控制台就可以。

3. 配置Linux服务器

VS需要Linux安装以下几个软件包:openssh-server, g++, gdb and gdbserver。

在Ubuntu下的命令是这样的:sudo apt-get install openssh-server g++ gdb gdbserver(这个命令随着不同系统的Package Manager变化。)

补充下,这个命令在服务器都是远程登陆后发送的(服务器都默认开启了SSH),如下:

40ce5f65cf0e767e0ecf6379068561f5.png

像树莓派这样的Linux设备不一定就开启了。第一步需要先开启SSH,第二步再配置好网络连接。可以参考这一篇文章:https://blog.csdn.net/blue_zy/article/details/79840686

安装好之后是这样的:6bc3668e80d048beceb24ebc6bae768a.png

我推荐使用WinSCP+Putty的方式来进行Linux远程控制,网页连接的始终不方便。而且这两个软件都是免费的。

WinSCP下载地址:https://winscp.net/eng/download.php

Putty下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

补充:WinSCP+Putty的配置

WinSCP这个软件最强大的地方是可以像Windows系统一样直接拖动或者复制粘贴的方式来管理远程Linux的文件系统。如下:

4e431fb02bf3a0cf9626efb8c9815f54.png

下载安装好了WinSCP之后,先配置新的会话,也就是目标的Linux连接:

0fe5ccf67971b1f9107ec64628e55ae3.png

注意主机名是ip地址,用户名的话看具体系统,一般都是root。

然后为WinSCP添加Putty。Putty下载好以后应该就是一个独立运行的程序,不需要安装。把putty.exe文件拷贝到WinSCP下面的PuTTY的子文件夹当中。

a902833839dc2af633d3cf6703b552ef.png

然后再增加PuTTY和WinSCP间的密码共享(否则每次打开PuTTY还需要再登录一次):

5efbd6c51732772fcef7e43450be90a3.png

b8117e9e7f215fb259e8f08d9be7630c.png

配置好以后就可以一键直接打开远程Linux连接:32d02f355d40cc68f407dee3aa8f015d.png

b90b27bd3d3c7d3303735223a819ce18.png

用PuTTY有个好处就是命令可以在Windows里面复制,然后直接在PuTTY里面右键粘贴。

4. 在VS中添加远程Linux目标

dd77a8076169ec654babf3126bef4623.png

5503607ae3d4454c813c99e8b2f0b414.png

如果是这样,那就是配置成功了,正在更新头文件的索引Cache(将远程的头文件下载到本地,方便开发时查看头文件):

0e564cb1899f168cef65819758073347.png

一切完成后是这样的:

7c548408aca78520288c36a2452b6355.png

这个Getting Started网页下有完整的操作流程,如果觉得我的流程不够清楚的可以再看一次。

5a688364322bca3063e4476e8ce1cbcc.png

如果不小心关闭了也没关系,这个网页在项目的readme文件夹下面,用浏览器打开就行:

76dbb0e50e56e4d96483d4123d26dccd.png

5. 如果到这步都没有什么问题出现,就可以直接运行程序了

点击运行并调试

04b167a75b2e0edd313ea29f1f9da8dc.png

这一个按键实际上的功能如下:

7f37e9cc319040ff9e2026895afe9c0a.png

复制源文件到远程Linux系统,启动远程的g++编译。实际上VS2019的作用就是转发命令而已。曾经有人和我讨论VS开发Linux项目弊端,他说在Linux上直接开发可以利用服务器的硬件优势加速项目的编译速度,实际上使用VS开发也是Linux进行本地编译的。这是微软的原话:When building on remote systems, the source files on your development PC are copied to the Linux computer and compiled there.即使用在步骤2中下载的g++工具集来完成编译。

编译完成以后,调用了远程运行以及启动远程gdb的调试。如果就当前的代码,点击运行调试后你只会看到如下的内容,并不会看到那句hello:

fde44a3cbeedfb7d10a8b7ad351e169a.png

这里显示的是远程的shell命令,没看到hello输出的原因是,还有个Linux输出窗口只出现了一瞬间就由于程序结束而消失了。

在调试里面可以选择让这个命令窗口一直显示,这样就可以看到远程Linux系统运行后在控制台的打印信息:

15733f63873652472431f97196ce576f.pngcd47425449d3592b9fcbf3b5844e3641.png

修改代码后再运行试试:

22739b0125794f3c558bd60812d262a2.pngc19290d0d83457c0845ba9ac5e44987c.png

6. 远程调试

这个就是为什么我推荐使用VS开发Linux了,和调试Windows一样的,直接加断点就行了。

a60c23394b00a7f94c07337ac2f8d484.png

进程,线程,堆栈帧,内存视图这些神器全都在。

7. 查看下远程部署的程序

475d487dd5daeb98a1e08b9c6654706f.png

8. 用PuTTY运行下生成的控制台程序

跳转到生成文件目录: cd /root/projects/LinuxConsole/bin/x64/Debug

运行.out文件:./LinuxConsole.out

9252f61f6b16f46895800ccad9e08018.png

实际上Linux下运行文件是不需要.out后缀的,我想这个后缀应该是VS加上用来区分的吧。

9. 不知不觉12点了,简单介绍下项目属性,剩下就去看微软的文档吧(比如创建和调试Linux 的Cmake项目)

744e1706ca19bf9c81fed71f2e034fe3.png

这里区分下GCC和G++:

GCC是GNU Compiler Collection的缩写。同时也有种缩写叫GNU C Compiler,也是GCC。所以网上会有这么个说法:GCC编译C语言,G++编译C++。这个句话有两个错误,一个是GCC有两种指向,另一个是G++也可以编译C语言。

我在上图中写的是GCC是g++的工具集,GCC不止支持C++一种语言,C, C++, Objective-C, Ada, Fortran, Java and treelang这些都支持,这就是为啥叫Collection 集合的原因。

原文解释在这里:http://gcc.gnu.org/onlinedocs/gcc-3.3.5/gcc/G_002b_002b-and-GCC.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值