vs2017 빌드 리눅스 C ++ 개발 환경

개발 환경

윈도우 10 운영 체제, 대 2,017 커뮤니티 에디션, VMware12.5.7

VM웨어의 설치 ubuntu14 바탕 화면

2017 설치 대

공식 웹 사이트 주소 https://visualstudio.microsoft.com/zh-hans/?rr=https%3A%2F%2Fwww.microsoft.com%2Fzh-cn%2F 다운로드

2017 대 최신을 다운로드 할 수있는 공식 웹 사이트에서, 당신은 ++ 빌드 환경 c를 리눅스해야하는 경우, 당신은 도구 세트은 "리눅스 C ++ 개발의 사용"을 확인해야, 설치 과정에주의를 지불 할 필요가, 아래 참조

구성 우분투 환경

2017 ssh를 통해 우분투 시스템에 로그인 할 필요가 대, ssh를 그렇게 또한 서비스를 설치해야하기 때문에 다음과 같이 환경 ++ 좋은 C에 설치된 우분투는 명령은 다음과 같습니다

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

SSH 서비스를 시작합니다 :

sudo service ssh start

vs2017 만든 리눅스 프로젝트

열기 vs2017, 다음 단계, 파일 -> 새 프로젝트 -> 크로스 플랫폼 -> linux-> 콘솔 응용 프로그램 (리눅스)

새 프로젝트의 완료 후, vs2017 자동으로 간단한 파일 maic.cpp을 생성

메뉴 표시 줄에서 디버그 -> 크로스 플랫폼에> 방금 생성에 우분투 서버를 사용자 입력 정보를 추가

오른쪽 솔루션, 당신은 구성 속성을 클릭합니다, 현재 프로그램의 속성 페이지를 볼 수 있습니다 -> 일반 -> 그냥 새 계정을 선택하면 "기본 원격 루트 디렉토리에 생성이 페이지에서 볼 수 생성 된 원격 컴퓨터의 ~ / 프로젝트는 "아래, 잠시 후에 해당 디렉토리 우분투 프로젝트에서 볼 수 코드를 생성 할 수 있습니다.

> 리눅스 콘솔을 열고 콘솔 프로그램 리눅스 - 메뉴 바, 디버그를 선택

디버거를 실행 버튼을 클릭, 프로그램에 지점을 깰 수, 당신은 정보에서 콘솔 출력을 볼 수 있습니다

~ / 디렉토리에 프로젝트에서, 우분투를 방문하면 새로 생성 된 프로젝트 폴더 "테스트"를 볼 수 있습니다

환경 문제

上述是一个简单的开发演示,在实际的工作中,代码可能很复杂。因为这几天在学习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