资讯专栏INFORMATION COLUMN

vs2017搭建linux c++开发环境

molyzzx / 2633人阅读

摘要:最近一直在阅读的源码,看到用户态代码的时候,需要对用户态的代码进行调试,一开始想直接使用中的进行调试,但是的工程太过于复杂,从网上找了些文章,发现能够支持程序的调试,捣鼓了一下午,遇到了一些坑,终于搭建好了开发环境。

最近一直在阅读ovs的源码,看到用户态代码的时候,需要对用户态的代码进行调试,一开始想直接使用linux中的GDB进行调试,但是ovs的工程太过于复杂,从网上找了些文章,发现vs2017能够支持linux c++程序的调试,捣鼓了一下午,遇到了一些坑,终于搭建好了开发环境。

最新版的vs 2017支持linux环境编程,与传统vs上的windows编程不同的是,vs2017 所需要的Linux环境需要搭载在一个linux的服务器上,vs 2017 相当于将windows系统和这个linux系统之间建立了某种映射,可以将代码复制到linux中对应的目录中,并且windows系统中的vs 2017能够看到运行的情况,甚至是对代码进行断点调试。

开发环境

window 10操作系统,vs 2017 community版,VMware12.5.7

在VMware中安装ubuntu14桌面版

vs 2017的安装

官网下载地址https://visualstudio.microsof...

从官网下载最新的vs 2017,在安装的过程中需要注意,如果你需要搭建linux c++环境,需要勾选“使用c++的linux开发”工具集,见下图

配置ubuntu环境

在ubuntu中安装好c++环境,因为vs 2017需要通过ssh登陆ubuntu系统,所以也需要安装好ssh服务,命令如下:

sudo apt-get install openssh-server g++ gdb gdbserver

开始ssh服务:

sudo service ssh start
vs2017创建linux项目

打开vs2017,步骤如下,文件-->新建项目-->跨平台-->linux->控制台应用程序(linux)

新建完成项目之后,vs2017自动生成一个简单的maic.cpp文件

菜单栏选择 调试->cross platform->add 将刚才建立的Ubuntu服务器用户信息输入进去

右键解决方案,可以看到当前程序的属性页面,点击配置属性->常规->远程生成计算机,选择刚刚新建的账户,可以看到,在该页面下,默认的远程生成根目录在"~/projects"下面,待会儿可以看到在ubuntu对应的目录下会生成项目的代码。

菜单栏选择调试->Linux Console打开linux程序的控制台

可以在程序中打断点,点击调试按钮进行运行,可以看到控制台打印出信息

登陆ubuntu,在~/projects目录下面可以看到新生成的项目文件夹“test”

遇到问题

上述是一个简单的开发演示,在实际的工作中,代码可能很复杂。因为这几天在学习linux的IO多路复用机制,从网上找了一个稍微复杂的通信程序,代码来自于博客https://www.cnblogs.com/Anker...,源代码有一处错误,需加上#include 。这个程序的功能是客户端向服务器发送信息,服务器接收输出并原样发送回给客户端,客户端接收到输出到终端。其中使用一些linux中的库文件。

问题1 无法找到库文件

在博客https://www.cnblogs.com/xylc/... 看到一个解决方法,将ubuntu下面/usr/include、/usr/local/include等目录复制到vs的linux header path(在我的机器中,地址为C:Program Files (x86)Microsoft Visual Studio2017CommunityCommon7IDEVCLinuxincludeusr)。

问题2 gdbserver模式无法使用

vs2017进行调试有两种方式,gdb和gdb-server,可以在菜单栏 调试->配置属性->调试->调试模式中进行配置,关于这两种模式的不同,官方文档的解释如下:

在“gdbserver”模式中,GDB 在本地运行,连接到在远程系统上运行的 gdbserver。 请注意,这是 Linux 控制台窗口唯一支持的模式。

在“gdb”模式中,Visual Studio 调试器驱动远程系统上的 GDB,如果 GDB 的本地版本与目标计算机上安装的版本不兼容,则远程系统上的 GDB 更易兼容。 |

从网上找了很多的资料,重新更新了ubuntu中的gdbserver,结果还是不行,因为我之前使用的是ubuntu17的server版本,无奈使用ubuntu14的桌面版,问题立马得到解决,目前仍然不知道gdbserver模型为什么无法使用,如果有路过的大神看到,希望评论区可以留言。

问题3 错误Stopped (tty input)

在运行gdb模式下运 行客户端的时候,客户端从控制台接受数据的那一段代码报Stopped (tty input)错误,通过看官方文档发现gdb模式不支持控制台交互,改成gdbserver模式后能正常使用。

最终运行结果

最终成功运行服务端和客户端程序,先启动服务端,再运行客户端,下图中分别为服务端和客户端运行情况。当客户端再控制台输入信息,服务端能接收,并回传给客户端在控制台显示。

参考资料

部署、运行和调试 Linux 项目

使用Visual Studio 2017作为Linux C++开发工具

作者:yearsj
转载请注明出处:https://segmentfault.com/a/11...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33626.html

相关文章

  • 开发环境还是选Linux

    摘要:在这一点上,下给用的库真的不太多一堆,微软已经停止维护了,而且微软声明这个库是面向客户端的,不建议在服务端使用。而我则不以为然,开发测试环境与最终部署环境的尽量一致,能有效避免系统各种稀奇古怪的问题,这都是血的教训。 因平台建设,笔者最近在调研图数据库Neo4j。在调研过程中,遇到的问题真的是波澜起伏不定,心神疲惫不堪。首先声明,这些问题不是Neo4j的问题,而是跟我们的开发环境有关。...

    kun_jian 评论0 收藏0
  • .net core项目实战之开发环境搭建

    摘要:安装环境后,从官网下载。配置首先更换下镜像源,国内的网络情况得适应,建议使用阿里云镜像。到阿里云官网注册个账户,有就直接进入控制台。 showImg(https://segmentfault.com/img/remote/1460000013793047); 在上一篇[[.net core项目实战之回顾总结]](http://www.bug2048.com/netcor...,从本篇开...

    Dongjie_Liu 评论0 收藏0
  • Linux下 PCL源码安装

    摘要:既然选择了,那末接下来便是理所当然的事情获取源码包。建议此源码安装不针对任何系统,,等都适用。若打算源码安装,在安装之前最好先更新一下系统,这样基本能保证所安装的包为最新包。 不得不知的PCL 所谓PCL(Point Cloud Library)其实就是一个开源的c++代码库,它实现了大量点云相关的通用算法和高效的数据管理结构,不仅涉及逆向工程领域,其还在模式识别,机器人视觉,计算机图...

    iamyoung001 评论0 收藏0
  • VS2015开发Linux程序详细教程-配置篇

    摘要:推出了跨平台开发,其中包括了对程序开发的支持,最近刚好需要开发程序,对其进行了一些研究。点击,若信息无误并且环境配置正确,则对话框自动关闭,代表连接成功,接下来就可以使用开发程序了。 VS2015推出了跨平台开发,其中包括了对Linux程序开发的支持,最近刚好需要开发Linux程序,对其进行了一些研究。 首先介绍下涉及到的开发工具 开发工具 VS2015Update3,下文简称VS(...

    曹金海 评论0 收藏0
  • 使用 Visual Studio Code 搭建 C/C++ 开发和调试环境

    摘要:下面是在我的电脑上输入的结果,可以看到我安装的版本为创建和设置语言开发工作区在你的计算机中选择一个合适的位置,作为你的语言开发工作区。 1. 安装 C/C++ 插件 C/C++ 是由 Microsoft 发布的支持 C/C++ 智能提示和调试等功能的插件,安装步骤如下: 使用快捷键 Ctrl + Shift + X 呼出扩展面板 在搜索框中输入:C/C++ 再安装由 Microsof...

    dreamGong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<