当前位置: 首页 > Linux

vs2017搭建linuxc++开发环境

时间:2023-04-06 01:35:56 Linux

最近一直在看ovs的源码。当我看到用户模式代码时,我需要调试用户模式代码。一开始想在linux下直接用gdb调试,但是ovs工程太复杂了。从网上找了一些文章,发现vs2017可以支持linuxc++程序的调试。折腾了一下午,遇到了一些坑,终于搭建了开发环境。vs2017最新版本支持在linux环境下编程。与传统的windows在vs上编程不同,vs2017需要的linux环境需要安装在linux服务器上。vs2017相当于在windows系统和linux系统之间建立了连接。通过一定的映射,可以将代码复制到linux中对应的目录下,windows系统中的vs2017可以看到运行情况,甚至可以断点调试代码。开发环境window10操作系统,vs2017社区版,VMware12.5.7在VMware官网安装ubuntu14桌面版vs2017安装下载地址https://visualstudio.microsof...官网下载最新的vs2017,安装过程中需要注意。如果需要搭建linuxc++环境,需要查看“linuxdevelopmentusingc++”工具集。看下图配置ubuntu环境,在ubuntu安装c++环境,因为vs2017需要通过ssh登录ubuntu系统。所以还需要安装ssh服务,命令如下:sudoapt-getinstallopenssh-serverg++gdbgdbserver启动ssh服务:sudoservicesshstartvs2017创建一个linux工程并打开vs2017,步骤如下,file-->newproject-->cross-platform-->linux->consoleapplication(linux)新建工程完成后,vs2017自动生成一个简单的maic.cpp文件菜单栏,选择Debug->crossplatform->添加,输入刚才创建的Ubuntu服务器用户信息右击Solution,可以看到当前程序的属性页,点击ConfigurationProperties->General->RemoteBuildComputer,选择刚刚创建的账户,在这个下可以看到页面,默认的远程构建根目录在“~/projects”下面,后面可以看到项目的代码会生成在ubuntu的对应目录下。在菜单栏选择Debug->LinuxConsole,打开linux程序的控制台,可以在程序中打断点,点击debug按钮运行,可以看到控制台打印出信息,登录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(在我的机器上,地址是C:\ProgramFiles(x86)\MicrosoftVisualStudio\2017\Community\Common7\IDE\VC\Linux\include\usr)。问题2gdbserver模式无法用vs2017调试。有gdb和gdb-server两种方式,可以在菜单栏Debug->ConfigurationProperties->Debug->DebugMode中配置。关于这两种模式的区别,官方文档解释如下:在“gdbserver”模式下,GDB在本地运行,连接到远程系统上运行的gdbserver。请注意,这是Linux控制台窗口唯一支持的模式。在“gdb”模式下,VisualStudio调试器驱动远程系统上的GDB,如果本地版本的GDB与目标计算机上安装的版本不兼容,则远程系统上的GDB更容易兼容。|网上找了很多资料,重新更新了ubuntu中的gdbserver,结果还是不行,因为之前用的是服务器版的ubuntu17,无奈只好用桌面版的ubuntu14,问题立马解决了,还是不知道gdbserver模型为什么不能用?如果路过的人看到了,希望大家在评论区留言。问题3ErrorStopped(ttyinput)在gdb模式下运行客户端时,客户端从控制台接收数据的代码报Stopped(ttyinput)错误。通过查看官方文档,发现gdb模式不支持console交互。改成gdbserver模式后就可以正常使用了。最终运行结果最后,服务端和客户端程序都运行成功了。先启动服务器,再运行客户端。下图分别展示了服务端和客户端的运行情况。当客户端在控制台输入信息时,服务器端可以接收并发回给客户端显示在控制台上。参考资料使用VisualStudio2017作为LinuxC++开发工具部署、运行和调试Linux项目作者:yearsj转载请注明出处:https://segmentfault.com/a/11...