visual studio 2015下使用gcc调试linux c++开发环境搭建完整详解

一直以来,相信绝大部分的开发都是windows/mac下做开发,尤其是非嵌入式和qt系的,而开源服务器程序绝大部分都是跑在Linux下,几乎就没有跑在windows下的。一直以来开发人员都是在windows下调试好非平台相关部分,然后到具体环境下去调试平台相关接口。

有着宇宙第一IDE之称的VS自从萨提亚·纳德拉上台之后,vs 2017正式支持跨平台开发,可是vs 2017听说太巨无霸了,安装好要几十个GB。而且之前只装了vs 2015,后来偶然搜到了翻译了msdn官网的帖子,vs 2015有linux c++开发的插件。太爽了。。下面来搭建一把。。

为了使用便捷:

1、首先确保装了小番茄;

2、禁用字符串和注释中的拼写错误。

其次,我应该告诉你去看https://blogs.msdn.microsoft.com/vcblog/2017/04/11/linux-development-with-c-in-visual-studio/就好。

第三,我需要告诉你的是msdn忽略了以及网络上找不到直接答案的关键性信息。安装好插件以及配置好ssh之后,别忙着测试,否则可以让你折腾好一会儿。

  • 卸载linux自带的gdb,下载gdb源码并编译安装gdb以及gdbserver(默认rhel Linux下不带gdbserver,一般用于嵌入式开发,否则会提示找到gdbserver);

  gdb的安装可以baidu,唯一需要注意的是,刚从gnu下载的gdb源码目录中并没有gdb/gdbserver这个目录,configure/make/make install之后,就生成了gdbserver目录,然后执行make就可以了。

  • 点击vs debug->linux console调出 linux控制台(否则,vs会卡死在那);
  • 在/etc/ld.so.conf中包含/usr/local/mpc-1.0.1/lib(否则会提示cc1plus: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory)

第四,既然是为了在windows下开发,目标环境是linux,就一定得使用linux下专有特性验证下确实在linux下运行。

c++代码,以获取操作系统和配置信息为例:

扫描二维码关注公众号,回复: 1935820 查看本文章
#include <iostream>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

void getOsInfo()
{
    FILE *fp = fopen("/proc/version", "r");
    if (NULL == fp)
        printf("failed to open version\n");
    char szTest[1000] = { 0 };
    while (!feof(fp))
    {
        memset(szTest, 0, sizeof(szTest));
        fgets(szTest, sizeof(szTest) - 1, fp); // leave out \n
        printf("%s", szTest);
    }
    fclose(fp);
}

void getCpuInfo()
{
    FILE *fp = fopen("/proc/cpuinfo", "r");
    if (NULL == fp)
        printf("failed to open cpuinfo\n");
    char szTest[1000] = { 0 };
    // read file line by line 
    while (!feof(fp))
    {
        memset(szTest, 0, sizeof(szTest));
        fgets(szTest, sizeof(szTest) - 1, fp); // leave out \n
        printf("%s", szTest);
    }
    fclose(fp);
}

void getMemoryInfo()
{
    FILE *fp = fopen("/proc/meminfo", "r");
    if (NULL == fp)
        printf("failed to open meminfo\n");
    char szTest[1000] = { 0 };
    while (!feof(fp))
    {
        memset(szTest, 0, sizeof(szTest));
        fgets(szTest, sizeof(szTest) - 1, fp);
        printf("%s", szTest);
    }
    fclose(fp);
}


int main()
{
    printf("===os information===\n");
    getOsInfo();

    printf("===cpu infomation===\n");
    getCpuInfo();

    printf("===memory information===\n");
    getMemoryInfo();
    return 0;
}

再看下用户根目录下的project。

直接在linux下运行看看是不是生成linux二进制的格式:

大功告成,可以干活了,必须宇宙第一IDE。。。

参考:

https://blogs.msdn.microsoft.com/vcblog/2017/04/11/linux-development-with-c-in-visual-studio/

https://www.cnblogs.com/coolulu/p/4124803.html

猜你喜欢

转载自www.cnblogs.com/zhjh256/p/9278533.html