重装系统后安装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. 20145326 《Java程序设计》实验五——Java网络编程及安全实验报告

    实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和20145211黄志远http://www.cnblogs.com/nostalgia-/组 ...

  2. Javaworkers团队最终项目总结

    Javaworkers团队最终项目总结 小组成员 20145205武钰 20145222黄亚奇 20145235李涛 20145103冯文华 团队项目总结 案例提出及工程用时 本次项目由十一到十六周共 ...

  3. #include <ntifs.h>出现PEPROCESS redefinition问题处理

    转载:http://blog.csdn.net/ytfrdfiw/article/details/23334297 如果在自己的程序中,即包含ntddk.h和ntifs.h的时候,编译的时候会出现如下 ...

  4. poj_3071 Football(概率dp)

    直接上状态转移方程: 记dp[i][j]为第i轮比赛,第j个队伍获胜的概率. 那么初始状态下,dp[0][j]=1://也就是第0轮比赛全都获胜 d[i][j]=sum(d[i-1][j]*d[i-1 ...

  5. 【Python初学者】准备

    准备着手学习Python这门久仰大名的语言.本篇随笔是学习它的准备阶段. 操作系统: Mac OS 10.11.5 下载编辑器Testwrangler 点我 第一个Python程序 在命令行中运行py ...

  6. Minimum Depth of Binary Tree,求树的最小深度

    算法分析:递归和非递归两种方法. public class MinimumDepthofBinaryTree { //递归,树的最小深度,就是它左右子树的最小深度的最小值+1 public int m ...

  7. python 随机选择字符串中的一个字符

    import random print(random.choice('abcdefghijklm'))

  8. shell 脚本sed替换文件中某个字符串

    有些大文件,特别的大.有几百兆,甚至更大. 用文本编辑器打开十分的费劲,电脑都卡死了. 想替换其中的字符串,很麻烦. 这个时候有了shell,简直强大到爆炸! # du -h user.sql 304 ...

  9. Qt5_TCP_Client01

    ZC: 代码来自<<Qt及Qt Quick开发实战精解>>“代码\src\5\5-3”(“代码\src\5\5-4”里面的代码差不多,不知有何差别...貌似应该是更为完善) Z ...

  10. git-it 教程,一些git知识点。/ 如何解决merge conflict/ 如何使用Github Pages./Git术语表

    一个git使用教程 https://:.com/jlord/git-it-electron#what-to-install 一个在线Github的功能教学:https://lab.github.com ...