2.6 visual studio开发linux程序

2.6.1 前言

       在linux环境下开发C++程序,除了需要掌握C++的知识外,还需要掌握如何写makefile和使用GDB进行调试,这对于不熟悉makefile和GDB的开发人员是比较麻烦的,目前vs2015及以上的版本能够支持linux c++程序的开发和调试,与传统vs上的windows编程不同的是,vs所需要的Linux环境需要搭载在一个linux的服务器上,vs相当于将windows系统和这个linux系统之间建立了某种映射,可以将代码复制到linux中对应的目录中,并且windows系统中的vs能够看到运行的情况,甚至是对代码进行断点调试,方便了在windows环境下的开发人员。

2.6.2 开发环境

在开发之前我们需要特定的环境和安装一些必须的软件:

1.环境:win7及以上版本的操作系统,CentOS或ubuntu等任何一种linux操作系统;

2.安装软件:windows操作系统上安装VS2015及以上版本;linux系统上安装gcc、g++和gdbserver,ssh-server软件;

环境的准备和依赖软件的安装请网上搜索自行安装,这里就不详细介绍。

注意:

(1).安装vs的时候我们除了安装一些基本的开发组件外,还需要安装c++的linux开发组件,如下图:

linux组件

(2).在linux系统上安装好ssh软件后,需要启动ssh-server服务,保证编译程序时,能将windows系统下的代码成功复制到linux中对应的目录中。

ssh-server服务的启动命令:

CentOS系统 : systemctl start sshd

redhat系统 : service sshd start

ubuntu系统 : service ssh start

2.6.3 创建简单的linux工程

我们以vs2017创建工程在ubuntu系统中运行为例:

1.创建一个linux平台的空项目,vs界面中选择:文件->新建->项目,然后弹出下面的对话框,开始新建工程;

新建项目

2.配置远程环境,这是我们程序运行的linux环境,需要在配置ssh远程登录;

vs界面中选择:工具->选项->跨平台->连接管理器,界面如下图所示:

配置ssh登录

添加ssh远程登录连接配置:点击添加按钮,界面如下:

ssh配置

配置成功后,需要设置远程的存放代码的目录,即windows系统下的代码复制到linux中对应的目录;

工程设置
远程目录设置

3.创建工程代码文件,创建一个test.cpp文件,写上经典的打印“Hello,World!”;

hello工程

调试运行之前,我们需要调出Linux 控制台窗口;

vs界面中选择:调试->Linux 控制台

启动调试后,界面如下;

调试配置

程序在编译,运行之前会把windows系统下的代码复制到linux中对应的目录,如下图所示:

代码目录设置
代码

2.6.4 创建有依赖库的linux工程

以访问boost库的日期为例介绍如何调试并运行程序:

1.修改test.cpp的代码如下:

#include <iostream>

#include <boost/date_time/gregorian/gregorian.hpp>

using namespace boost::gregorian;

using namespace std;

int main()

{

    date d(2019, 4, 20);

    cout << "date: " << to_iso_extended_string(d) << endl;

    return 0;

}

2.添加依赖的头文件目录

头文件配置

3.添加依赖库的文件目录

库目录设置

4.添加依赖库的库文件名称

添加依赖库

5.完成了以上的步骤,编译程序成功,但在运行的时候会报错;如下图所示:

错误信息

因为程序最终还是在linux系统中运行的,而使用vs2017做调试,只是与linux系统做了某种映射,使调试结果,运行结果在vs界面展示出来,所以我们需要在linux系统设置依赖库的查找路径。

linux下设置动态库的查找路径一般有以下三种方式:

(1).使用export LD_LIBRARY_PATH=XXX,这种方式在退出当前终端后就失效

export LD_LIBRARY_PATH=/root/opt/boost/lib:

(2).修改~ /.bashrc或~/.bash_profile或系统级别的/etc/profile中LD_LIBRARY_PATH的路径;

在文件中添加export LD_LIBRARY_PATH=/root/opt/boost/libsource

命令可以用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录

source .bashrc 或者 source /etc/profile

(3).在/etc/ld.so.conf文件中添加库的搜索路径,这种方式不受用户的限制

在/etc/ld.so.conf下面加一行/root/opt/boost/lib

然后执行命令 /sbin/ldconfig 会更新搜索路径到 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表;

程序运行时的搜索目录会从默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。

6.在linux系统中修改程序的查找路径

使用方式一设置查找路径后,依然报错,因为方式一是临时的设置方式,只对当前终端生效;

使用方式二,方式三设置后,程序能正常调试运行;

如下图所示:

运行界面

2.6.5 总结

1.使用vs2017做调试,只是与linux系统做了某种映射,使调试结果,运行结果在vs界面展示出来。 

2.程序编译时,如果不能把代码拷贝到linux中设置的远程目录下,则可能是ssh服务没有启动。 

3.程序调试运行时,如果找不到需要链接的库,则需要在linux系统中加入依赖库的查找路径。 

链接

星河公链官网

2.6 visual studio开发linux程序 - arm_snow的博客 - CSDN博客

2.6 visual studio开发linux程序-wx5ca1790914ac4的博客-51CTO博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 155,623评论 4 358
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,044评论 1 285
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 105,482评论 0 236
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,350评论 0 201
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,666评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,130评论 1 204
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,525评论 2 306
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,247评论 0 193
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,870评论 1 235
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,211评论 2 239
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,753评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,116评论 2 249
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,639评论 3 228
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,929评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,634评论 0 191
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,141评论 2 262
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,089评论 2 257

推荐阅读更多精彩内容