重装系统后安装VS2015时卡住了,因而试试看VS2017怎样,据说还支持调Linux。发现VS2017跟12/13/15又有了新的飞跃,居然支持模块化下载,对于我这种主要写C++简直是个福音,勾了Linux C++和MFC后,C盘+D盘也才6G,比起VS2015只额外勾MFC就有10G来讲轻了这么多!html
VS2017只有在线安装包,寝室里下载不到10分钟就搞定了,火烧眉毛地新建项目linux
哇擦,终于没有了微软地一堆.NET系列了!ssh
而后如今就开始配置跨平台Linux开发环境,按照官网教程模块化
https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/函数
个人Linux是Ubuntu 16.04,微软支持14.04和16.04,因此可使用。首先为了支持远程调试,Linux那边须要安装一些服务工具
sudo apt-get install openssh-server g++ gdb gdbserver
这里我一开始发现Linux不能联网,原来是以前在实验室里设置了静态IP,回寝室后,因为这个静态IP和寝室的路由器支持IP不是一个网段,致使须要从新修改IP跟主机一个网段。具体参见以前的博客 虚拟机Linux桥接模式下设置静态IPui
新建一个Linux控制台项目,VS主页会有教程,因而火烧眉毛地写了份使用POSIX线程库的代码编码
#include <cstdio> #include <cstdlib> #include <string.h> #include <pthread.h> void* thread_func(void* arg) { printf("线程函数: %s\n", static_cast<char*>(arg)); return nullptr; } int main() { pthread_t tid; int errnum = pthread_create(&tid, nullptr, thread_func, const_cast<char*>("Hello Linux!")); if (errnum != 0) { fprintf(stderr, "pthread_create error: %s\n", strerror(errnum)); exit(1); } errnum = pthread_join(tid, nullptr); if (errnum != 0) { fprintf(stderr, "pthread_join error: %s\n", strerror(errnum)); exit(1); } return 0; }
使用POSIX线程时,编译选项须要加上-pthread,因而在菜单:调试->HelloLinux属性(这里HelloLinux是项目名称)中修改命令行参数spa
既然是远程调试,那么天然须要远程链接了,写好代码后菜单:调试->生成解决方案(快捷键F7)后,会自动弹出链接框(端口号是22,即SSH链接,因此刚才才须要在Linux上安装openssh-server)插件
在菜单:工具->选项->跨平台中,也能够看到远程链接地信息
编译会出错,提示找不到pthread_create和pthread_join,可是我加了-pthread编译选项啊?缘由是VS没有自动把Linux的头文件包含进来,所以须要手动把Linux系统的/usr/include、/usr/local/include目录复制到VS的linux头文件路径下,个人VS安装路径把默认的C盘改为了D盘,因而目录就是下面这个
D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\Linux\include\usr
而后要添加该目录到VS的头文件目录下
而后程序参数也要修改
以后就是F7组建、F5调试了,注意要在控制台显示结果必须打开Linux控制台(菜单:调试-Linux控制台)
结果如图,程序运行成功了,可是中文字符乱码,缘由是VS2017默认编码模式并非UTF-8,这里须要安装插件
菜单:工具->扩展与更新->联机,搜索UTF找到最顶上这个插件,下载
以后重启VS,从新生成解决方案->开始调试,依然乱码。缘由是更改了UTF-8以后,原来代码中的中文没有自动转换成UTF-8编码,可是显示的仍是中文而非乱码,因此须要把中文部分所有删除而后再次键入,以后就成功了
锵~锵~除了远程链接有点耗时间外,其他仍是很满意的,VS大法好!