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开发组件,如下图:

(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远程登录连接配置:点击添加按钮,界面如下:

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

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

调试运行之前,我们需要调出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/lib
source命令可以用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
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系统中加入依赖库的查找路径。

原文地址:https://blog.51cto.com/14267585/2386651

时间: 2024-10-27 07:38:51

2.6 visual studio开发linux程序的相关文章

visual studio 开发linux程序

VisualGDB支持Linux的原理是,通过ssh连接到Linux系统上通过ssh给linux下达命令 . (类似visualgdb的有windgb  ,这2个都是商业软件.) Visual GDB把GDB调试工具集成到visual studio 开发环境中,在调试过程中,可以使用visual studio原有的单步执行.设定断定等快捷键,还可以在visual GDB session的窗口中输入GDB的调试命令,集成了visualGDB之后还可以在程序执行的过程中用鼠标悬停的方式查看和修改变量

visual studio开发工具的C#主流控件属性一览表

visual studio开发工具的C#主流控件属性一览表 详细的介绍了各控制属性的详细中文介绍 C#控件及常用设计整理 1.窗体 1.常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体. (2) WindowState属性: 用来获取或设置窗体的窗口状态. 取值有三种: Normal (窗体正常显示). Minimized(窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示). (3)StartPosition属性:用来获取或设置运

【读书笔记《C# 开发实战1200例》】1.2 Visual Studio 开发环境使用

005.为程序设置版本和帮助信息 效果图: 1.新建Windows窗体应用程序WindowsFormsApplication1 2.找到AssemblyInfo.cs文件,编辑下就可以了 using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; //定义程序集清单的程序集标题自定义属性 [assembly: AssemblyTitle("为程序设置版本

【读书笔记《C# 开发实战1200例》】1.1 Visual Studio 开发环境的安装和配置

001.Visual Studio 开发环境安装与配置 1. “工具” - “导入和导出设置” 2.选中“重置所有设置” 3.选中“否,仅重置设置,从而覆盖我的当前设置” 4.在此界面根据实际情况选中适合自己的开发环境设置 002.设置程序代码的行号 1.菜单项“工具”/“选项”命令 2.选择“文本编辑器”节点下的“所有语言选项”,在右侧选中“行号” 003.使开发环境全屏显示 1.菜单栏“视图”/“全屏显示”命令,或者直接按 Shift + Alt + Enter 键即可. 004.根据需要创

Visual Studio开发工具升级注意事项

由于前几年公司开发的系统使用的开发工具版本不统一,现在后期维护升级在开发人员的电脑上要同时安装好几个不同的开发工具, 比如VS2008,VS2010,VS2012,甚至还有用VS2003开发的接口之类的程序,这种还在目前的win 7系统上无法安装,只好安装在虚拟机 上了.这样导致开发人员的电脑安装的软件过于庞大,C盘即时有100G的空间,也会被占用的所剩无几.电脑运行的速度也是大大下降, 严重影响了工作效率,而且有时候几个版本切换来切换去也麻烦,而且低效. 疼定思疼之下,我们觉得将开发环境尽量统

用Visual Studio编辑Linux代码

估计很多人都是用惯了Visual Studio的主,怎么也不适应Linux的一套编辑器,比如vim.source insight这些东西,可视化的eclipse效果还好点,但一般以远程共享一台Linux服务器为主,没那么好条件一人一个Linux机器. 我用了有几个月的insight,也就看看代码,反正个人感觉就是别扭,现在换成用VS编辑代码,感觉爽多了. 大致方法如下: (1)从svn下载Linux代码到本地目录. (2)打开Visual studio,选择“File” -> “New” ->

gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)

cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从boost库的划分中可以看出来端倪,cygwin下的gcc和linux下的gcc完全使用的是相同的Toolsets.所以完全可以和linux一起同步更新gcc版本,而不用担心问题,并且在cygwin/gcc做的东西(不用win32的)可以无缝的用在linux下,没有任何问题.是在windows下开发

SharePoint 2013 工作流之Visual Studio开发示例篇

原文:SharePoint 2013 工作流之Visual Studio开发示例篇 SharePoint 2013引用了WF4.0 Foundation,支持使用Designer和Visio进行设计,但是功能受限,而Visual Studio可以开发功能更加丰富的工作流,下面我们简单举个例子. 1.本例使用的是VS 2013版本,新建一个SharePoint空项目: 2.部署为服务器场解决方案,如下图: 3.添加新项,选择工作流模板,如下图: 4.本例选择列表工作流,当然你按照自己的需要选择:

如何使用Visual Studio开发PHP项目

在windows下开发php除了记事本 DW 以及一帮Zend studio,Eclipse,NetBeans之流以外,个人感觉还是vsiual studio+phptoole最是好使.主要的原因就是速度. vs的速度真的是快其他的IDE太多了,无论是从启动速度还是使用过程中资源的耗用都要好于其他3款,毕竟是微软自家的东西. visual studio 2013 上有两款比较有名的php插件 vs.php 和phptools ,前者基本只有2010的2.6版本能注册,而新版已经出到3.4了却无人