zoukankan      html  css  js  c++  java
  • Visual Studio add linux Project

    //https://blog.csdn.net/lanxiaziyi/article/details/81508499

    {

    使用vs2017进行linux下的开发
    现在 加点注意事项:
    1,依赖的库,都要在vs的配置文件中置指定好。
    例如:
    -levent -lpthread -L/root/freeswitch/libs/esl/.libs

    1
    在 属性页->配置属性->链接器->命令行->其他选项 中添加。
    还可以在 属性页->配置属性->链接器->输入->库依赖项 中添加。
    2

    为了能方便的使用代码提示。需要将你使用的头文件从 linux中下载到 windows下。
    同样要指定搜索路径(这是linux的搜索路径)
    -I /root/freeswitch/libs/esl/src/include


    1
    指定vs代码提示的搜索路径是
    属性页->配置属性->c/c++->常规->附加包含目录 。

    }

    {

    开发环境

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

    在VMware中安装ubuntu14桌面版

    vs 2017的安装

    官网下载地址https://visualstudio.microsoft.com/zh-hans/?rr=https%3A%2F%2Fwww.microsoft.com%2Fzh-cn%2F

    从官网下载最新的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/p/3261006.html,源代码有一处错误,需加上#include <arpa/inet.h>。这个程序的功能是客户端向服务器发送信息,服务器接收输出并原样发送回给客户端,客户端接收到输出到终端。其中使用一些linux中的库文件。

    问题1 无法找到库文件

    在博客https://www.cnblogs.com/xylc/p/6533716.html?&from=androidqq 看到一个解决方法,将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://www.cnblogs.com/yearsj/p/9600682.html
    segmentfault对应博文:https://segmentfault.com/a/1190000016300215

    }

  • 相关阅读:
    centos7删除已经安装的docker
    docker -v挂载数据卷网络异常的问题
    docker数据拷贝
    通过nsenter连接docker容器
    centos6.5 mysql开机启动
    深度学习课程笔记(五)Ensemble
    深度学习课程笔记(四)Gradient Descent 梯度下降算法
    深度学习课程笔记(三)Backpropagation 反向传播算法
    深度学习课程笔记(二)Classification: Probility Generative Model
    深度学习课程笔记(一)CNN 卷积神经网络
  • 原文地址:https://www.cnblogs.com/YZFHKMS-X/p/12445947.html
Copyright © 2011-2022 走看看