VS2017创建并调试LINUX程序

原创,转载请申明
宇宙第一IDE以前没办法用在linux程序先,现在不仅能在python上调试也能调试linux程序。

  • 1.VS安装
  • 2.SSH
  • 3.创建linux工程
  • 4.头文件
  • 5.连接库

1.VS安装

这里我就不详细说了,网上都有安装时候把linux组件选上就好了。


image.png

2.SSH

SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UXLinuxAIXSolarisDigital UNIXIrix,以及其他平台,都可运行SSH。
linux console window下

sudo apt-get install ssh

默认端口为22,可以修改。

3.创建linux工程

170312111691991.gif

Setting up your project for Linux Development
With this workload you can author C++ code for Linux servers, desktops and devices. You can manage your connections to these machines from within VS. VS will automatically copy and remotely build your sources and can launch your application with the debugger. Our project system supports targeting specific architectures, including ARM.


ArchOptions.gif

Adding and removing connections
To add a new connection, go to Tools > Options and search for Connection, Connection Manager will be under Cross Platform. From here you can add and remove connections.


ManageConnections.gif

To change which connection a project is using go to the project properties general settings and update the Remote Build Machine option.
ChangeRemote.gif

Project Properties
All of the options necessary to control C++ compilation are exposed on the project properies pages. We'll cover a few specific to how things work for Linux. First under general settings, you will see the remote root is set to ~/projects/ by default and that we are setting the remote project directory to match our project name in that location.


OutputTypes.gif

4.头文件

  1. 目标机上gcc、g++、gdb一定要安装
  2. linux引用的头文件需要手动复制到$:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\Linux\include\usr路径下,尤其是特殊的项目引用头文件
  3. 包含目录最好在(项目右键->属性->c/c++->常规->附加包含目录)
  4. 自定义库包含目录一定要在(项目右键->属性->链接器->常规->附加库目录)里面添加,(vc++目录没有用)
  5. gdb调试项目在复制到linux时是ssh登录用户下的目录,如果没有设置绝对路径
  6. vs2017生成时都需要目标机的支持,否则会有g++的编译错误

5.链接库

  • 远程调试Linux的话,动态库libxxx.so和静态库xxx.a都是在[链接器->输入]里配置
    例如libopencv_core.so,连接器输入时只要填写opencv_core
  • 静态库如果是在Linux环境下,就要在项目属性中:链接器->常规->附加库目录中添加对应的库路径(写Linux环境下的绝对路径),在链接器->输入->库依赖项里面写上需要的库名称,去掉名称里面的lib和扩展名.a,例如:libuser.a就是user。
    总之在编译阶段需要的文件配置实际都是在Linux环境下的。比如在项目中使用到了第三方库,需要引用头文件以及静态库,动态库。那这些头文件库文件都是在Linux环境下去用的,要保证项目在编译阶段能够在Linux环境下找到对应头文件和静态库文件,在运行的时候也能找到对应的动态库。头文件和静态库的配置都是要在项目属性中去配置的,配置的时候要求是那些文件在Linux系统目录中的位置,一般写绝对路径就好了。
  • 动态库配置用户环境变量就可以了,比如生成的可执行文件在运行的时候需要一个.so文件,如果这个.so文件在系统库目录下,就不需要再去设置了。如果在用户自定义的目录下,就需要配置用户环境变量或者系统环境变量。比如修改一个用户的环境变量,进入该用户目录下,修改.bashrc文件添加LD_LIBRARY_PATH=自定义动态库目录。修改完之后记得使用source .bashrc命令使修改生效。
#将用户根目录下的lib目录添加到动态库目录,这样该用户的执行文件再运行的时候就会再这个目录中查找相应的.so文件
LD_LIBRARY_PATH=$HOME/lib  
export LD_LIBRARY_PATH
source .bashrc

其他

调试->linux控制台可以查看输出信息



属性->调试->启动前命令,填入:

export DISPLAY=:0.0

这样就能在远端启动程序并显示。
若要并行计算,由于现在使用g++进行编译,默认没有打开openmp。C/C++ ->命令行->其他选项、连接器->命令行->其他选项

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • 真正到了分别的时候,心里却那么不舍。 往事如烟,历历在目。 十六年的青春,十六年的汗水。 未来如斯,忐忑如斯。
    雨林卫阅读 143评论 1 0