重装系统后安装VS2015时卡住了,于是试试看VS2017怎样,听说还支持调Linux。发现VS2017跟12/13/15又有了新的飞跃,竟然支持模块化下载,对于我这种主要写C++简直是个福音,勾了Linux C++和MFC后,C盘+D盘也才6G,比起VS2015只额外勾MFC就有10G来说轻了这么多!

VS2017只有在线安装包,寝室里下载不到10分钟就搞定了,迫不及待地新建项目

哇擦,终于没有了微软地一堆.NET系列了!

然后现在就开始配置跨平台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桥接模式下设置静态IP

新建一个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 != ) {
fprintf(stderr, "pthread_create error: %s\n", strerror(errnum));
exit();
} errnum = pthread_join(tid, nullptr);
if (errnum != ) {
fprintf(stderr, "pthread_join error: %s\n", strerror(errnum));
exit();
} return ;
}

使用POSIX线程时,编译选项需要加上-pthread,于是在菜单:调试->HelloLinux属性(这里HelloLinux是项目名称)中修改命令行参数

既然是远程调试,那么自然需要远程连接了,写好代码后菜单:调试->生成解决方案(快捷键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大法好!

VS2017开发Linux平台上的程序的更多相关文章

  1. Linux平台上常用到的c语言开发程序

    Linux操作系统上大部分应用程序都是基于C语言开发的.小编将简单介绍Linux平台上常用的C语言开发程序. 一.C程序的结构1.函数 必须有一个且只能有一个主函数main(),主函数的名为main. ...

  2. Linux平台上轻松安装与配置Domino

    Linux平台上轻松安装与配置Domino Domino Server的编译安装过程中需要用到libstdc++-2.9和glibc-2.1.1(或者其更高的版本)两个编译模块,它们是Linux开发编 ...

  3. 如何在linux平台上编译安装zlib软件(公司部分线上机器缺少zlib不能安装supervisor)

    文章在Centos  6.5 linux平台上演示一下如何进行编译安装zlib软件,并配置相关的选项加载使用.示范从下载到安装并配置进行使用过程一系列整套讲解,希望可以给网友考虑使用,谢谢.   工具 ...

  4. 在LINUX平台上手动创建多个实例(oracle11g)

    在LINUX平台上手动创建多个实例(oracle11g) http://blog.csdn.net/sunchenglu7/article/details/39676659 ORACLE linux ...

  5. Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关

    什么是Jexus Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关,以支持ASP.NET.ASP.NET CORE.PHP为特色,同时具备反向代理.入侵检测等重要功能.可以这样说,J ...

  6. DELPHI开发LINUX插件架构的程序

    DELPHI开发LINUX插件架构的程序 DELPHI可以开发LINUX配置型插件架构的程序,并且这一套插件架构,同样适用于MSWINDOWS和MAC. 配置插件: 根据配置,动态加载插件:

  7. Linux下开发Windows平台运行的程序 - MinGW

    开源不乏神人,于是有了MinGW(Minimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils一直到Win32平台下,包含一系列头文件.库和可 ...

  8. 使用VS2017 编写Linux系统上的Opencv程序

    背景 之前写图像算法的程序都是在window10下使用VS编写,VS这个IDE结合“ImageWatch.vsix“插件,用于调试opencv相关的图像算法程序十分方便.后因项目需要,需将相关程序移植 ...

  9. Domino V8 在 UNIX/Linux 平台上的安装及其常见问题

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 Domino V8 的安装需求 Domino V8 可以支持多种平台和操作系统,表1 列出了其支持的各种 UNIX/Lin ...

随机推荐

  1. Kubernetes证书相关(CFSSL)

    CFSSL是CloudFlare开源的一款PKI/TLS工具. CFSSL 包含一个命令行工具 和一个用于 签名,验证并且捆绑TLS证书的 HTTP API 服务. 使用Go语言编写. Github ...

  2. sqlite的时间筛选字段

    唉,需要不停的踩坑呀 commandText = commandText + string.Format("where [CollectDateTime] <'{0}' and [Co ...

  3. POJ 1833 排序

    http://poj.org/problem?id=1833 题意: 给出一个排序,求出它之后的第k个排序. 思路: 排序原理: 1.如果全部为逆序时,说明已经全部排完了,此时回到1~n的排序. 2. ...

  4. 面向对象之php多态

    php是面向对象的脚本语言,而我们都知道,面向对象的语言具有三大特性:封装,继承,多态(接口的多种不同的实现方式即为多态). 封装是类的构建过程,php具有.php也具有继承的特性.唯独这个多态,ph ...

  5. C# 使用Dictionary、linq实现根据集合里面的字符串进行分组

    //对下面集合里面的字符串按照“_”进行分组. List<string> list = new List<string>() { "1_32", " ...

  6. Android 之低版本高版本实现沉浸式状态栏

    沉浸式状态栏确切的说应该叫做透明状态栏.一般情况下,状态栏的底色都为黑色,而沉浸式状态栏则是把状态栏设置为透明或者半透明. 沉浸式状态栏是从android Kitkat(Android 4.4)开始出 ...

  7. offsetParent.scrollTop IE下一直报错,说“缺少对象”

    <div style="position:fiexd; top:135px;_position: absolute; right: 0pt; _top:expression_r(off ...

  8. CF 920

    t1 随便乱搞 t2 随便乱搞 然后wa了三发,QAQ t3 随便乱搞 t4 邻接表+堆 对进出进行一个统计 然后时间到了...

  9. 硬盘安装CentOS 6.0(超级详细图文教程)

    硬盘安装CentOS 6.0(超级详细图文教程) 来源:   引言: 电脑系统是Windows XP,电脑没有光驱.手头没有U盘.没有移动硬盘.电脑主板不支持U盘启动,在这种情况下想安装CentOS ...

  10. openResty缓存前移(到达nginx端)

    一.openResty的理解 OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高 ...