zoukankan      html  css  js  c++  java
  • VS2017开发Linux平台上的程序

    重装系统后安装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
    ", 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
    ", strerror(errnum));
            exit(1);
        }
    
        errnum = pthread_join(tid, nullptr);
        if (errnum != 0) {
            fprintf(stderr, "pthread_join error: %s
    ", strerror(errnum));
            exit(1);
        }
    
        return 0;
    }

    使用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 Studio2017CommunityCommon7IDEVCLinuxincludeusr

    然后要添加该目录到VS的头文件目录下

    然后程序参数也要修改

    之后就是F7组建、F5调试了,注意要在控制台显示结果必须打开Linux控制台(菜单:调试-Linux控制台)

    结果如图,程序运行成功了,但是中文字符乱码,原因是VS2017默认编码模式并不是UTF-8,这里需要安装插件

    菜单:工具->扩展与更新->联机,搜索UTF找到最顶上这个插件,下载

    之后重启VS,重新生成解决方案->开始调试,依然乱码。原因是更改了UTF-8之后,原来代码中的中文没有自动转换成UTF-8编码,但是显示的还是中文而非乱码,所以需要把中文部分全部删除然后再次键入,之后就成功了

    锵~锵~除了远程连接有点耗时间外,其余还是很满意的,VS大法好!

  • 相关阅读:
    LeetCode "Palindrome Partition II"
    LeetCode "Longest Substring Without Repeating Characters"
    LeetCode "Wildcard Matching"
    LeetCode "Best Time to Buy and Sell Stock II"
    LeetCodeEPI "Best Time to Buy and Sell Stock"
    LeetCode "Substring with Concatenation of All Words"
    LeetCode "Word Break II"
    LeetCode "Word Break"
    Some thoughts..
    LeetCode "Longest Valid Parentheses"
  • 原文地址:https://www.cnblogs.com/Harley-Quinn/p/7465517.html
Copyright © 2011-2022 走看看