vs2017ビルドLinuxのC ++開発環境

開発環境

ウィンドウ10オペレーティングシステム、VS 2017コミュニティ版、VMware12.5.7

VMware社でのインストールubuntu14デスクトップ

2017インストール対

公式サイトのアドレスhttps://visualstudio.microsoft.com/zh-hans/?rr=https%3A%2F%2Fwww.microsoft.com%2Fzh-cn%2Fをダウンロード

公式サイトから2017対最新のダウンロード、あなたは環境を構築するC ++をLinuxに必要がある場合は、以下を参照してください、「使用LinuxのC ++開発の」ツールセットをチェックする必要があり、インストールプロセスに注意を払う必要があります

設定Ubuntuの環境

次のように2017対ので、サービスをインストールする必要はssh、ssh経由でUbuntuシステムにログインする必要があるため、++環境Cは良いでのUbuntuをインストールし、コマンドは次のとおりです。

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

SSHサービスを開始します。

sudo service ssh start

vs2017作成されたLinuxプロジェクト

オープンvs2017、次の手順、ファイル - >新規プロジェクト - >クロスプラットフォーム - > linux->コンソールアプリケーション(Linuxの)

新しいプロジェクトが完了した後、vs2017は自動的に単純なファイルmaic.cppを生成し、

メニューバー、デバッグを選択 - >クロスプラットフォーム>先ほど作成にUbuntuのサーバにユーザ入力情報を追加

適切なソリューションは、Configurationプロパティ]をクリックし、現在のプログラムのプロパティページを見ることができます - >一般 - >、ちょうど新しいアカウントを選択し、あなたは「デフォルトはリモートルートディレクトリに生成され、このページで見ることができます生成されたリモートコンピュータ〜/以下のプロジェクト」、少し後で対応するディレクトリのUbuntuプロジェクトで見ることができるコードを生成します。

メニューバー、デバッグを選択 - > Linuxのコンソールを開きコンソールプログラムのlinux

デバッガを実行するために、ボタンをクリックして、プログラム内のポイントを破ることができ、その情報から、コンソールのプリントを見ることができます

〜/ディレクトリの下にプロジェクトでランディングUbuntuのは、新しく生成されたプロジェクトフォルダ「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 Studio\2017\Community\Common7\IDE\VC\Linux\include\usr)。

问题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模式后能正常使用。

最终运行结果

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

おすすめ

転載: www.cnblogs.com/YZFHKMS-X/p/11763499.html