本文章记录如何使用VS2017进行linux应用程序的开发(针对新手小白),VS2017能较为方便的通过SSH编辑并远程调试linux系统上的程序,大致开发流程如下:
1、在windows系统的VS2017上编辑代码;
2、VS2017通过SSH将代码传送到虚拟机Linux系统上进行编译、链接;
3、调用Linux系统上的GDB调试程序,并将调试过程中的状态同步至windows系统端的VS2017;
提示:以下是本篇文章正文内容,下面案例可供参考
1、集成开发工具:VS2017;
2、虚拟机:VMware Workstation 15 Pro;
3、linux系统ubuntu14.04。
安装就不细讲,可以百度详细步骤,注意在安装时勾选“使用C++的Linux开发”工具集,如下图所示:
在ubuntu14.04下,安装好openssh-server/g++/gdb/gdbserver
代码如下(示例),可以一行一次性安装,可以一次执行一行命令。
sudo apt-get install openssh-server
sudo apt-get install g++
sudo apt-get install gdb
sudo apt-get install gdbserver
安装好以上工具之后,检查ubuntu是否已经开启了SSH服务,代码如下
ps -e |grep ssh
如果看到sshd那说明ssh-server已经启动了,如果没有则可以这样启动:
sudo /etc/init.d/ssh start
ssh-server配置文件位于/ etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。
然后重启SSH服务:
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
关于SSH的开启和设置请参阅以下链接:
ubuntu开启SSH服务
修改ssh登录的配置,即/etc/ssh/sshd_config文件,修改为允许root登录,(如果只想用普通用户登陆可以不用修改,但是那样程序的调试运行会受限于普通用户权限),代码如下:
sudo vim /etc/ssh/sshd_config
进入vim编辑,用方向键向下滚动找到PermitRootLogin这项,改为 PermitRootLogin yes
重启ssh服务来让修改生效
sudo service ssh restart
由于VS2017是通过SSH远程传输代码至ubuntu14.04上,传输时需要配置IP、端口等,每次开启虚拟机,ubuntu系统的IP有可能不一样,有几率需要重新配置SSH的IP和端口等,因此将ubuntu配置成静态IP上网是有必要的,详细步骤请参阅以下链接内容:
为VMware虚拟机内安装的Ubuntu 16.04设置静态IP地址
配置好静态IP后,可以通过打开windows的CMD终端,看能否ping通刚才设置的ubuntu14.04系统的静态IP
1、点击Debug按钮。
2、输入IP地址、端口,用户名、密码信息,点击连接,即可远程登录ubuntu系统,VS2017会传输代码至ubunt系统上进行编译、链接和调试。
3、后续如果需要更改SSH的配置信息,可依次选择VS2017菜单栏的“工具”——>“选项”——>“跨平台”——>“连接管理”;在其中点击添加和删除SSH远程连接。见下图
4、可通过依次选择VS2017菜单栏的“调试”——>“linux控制台“ 来打开linux的控制台窗口,观察程序打印输出,如下图:
因为我们是在VS2017上编辑的代码,我们需要使用的C/C++以及ubuntu上安装的第三方库的头文件(.h文件)都在ubuntu系统目录:usr/include 和 usr/local/include 下,因此需要将这两个目录复制到VS2017相应目录中,如下(示例):
D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\Linux\include\usr
到这里我们能开发简单的程序了,但是还无法使用第三方的库来开发我们的应用程序,还需要对项目进行配置。
1、接下来讲述项目如何配置和使用第三方库,这里以使用libevent搭建RPC的服务端程序为例;先打开项目属性对话框。
这里进行远程生成根目录和远程生成项目目录的设置(此处可以使用默认的目录,读者若需要更改ubuntu系统上存储此项目的目录则继续看,若无需更改,则可跳过3.1小节),点击远程生成根目录右侧下拉按钮,然后点击编辑。
2、输入:/home/kiro/projects 然后点击确定,这个目录会在ubuntu系统中生成;这里大家可以根据自己的目录来设定,不能设置到root目录,否则会弹出没有权限创建目录的错误。
注:此处大家可以点击右下角的宏,然后在其中选择合适的宏名称,如$(RemoteRootDir),这个宏对应的目录就是~/projects ,如下图所示
3、点击远程生成项目目录右侧下拉按钮,然后点击编辑,输入:
/home/kiro/$(ProjectName)
然后点击确定,并点击应用,这个目录会在ubuntu系统中生成;这里大家可以根据自己的目录来设定,不能设置到root目录,否则会弹出没有权限创建目录的错误。最终配置结果如下图:
1、这里我们需要配置“附加库目录”,它的作用是告知编译器我们要使用的第三方库的动态链接文件和静态链接文件所在的目录(这里是指ubuntu系统中对应目录)。
2、我们点击“附加库目录”,点击右侧的下拉选择按钮,然后点击编辑,输入:/usr/lib/x86_64-linux-gnu 我所要使用的第三方库libevent的目录是在/usr/lib/x86_64-linux-gnu目录下,大家可以根据自己的实际情况进行编辑。如下图:
3、然后我们选择链接器下的“输入”选项进行“库依赖项”配置,(它的作用是告知编译器,我们所用到的第三方库的动态链接库和静态链接库的名字)。
4、我们点击“库依赖项”,点击右侧的下拉选择按钮,然后点击编辑,输入:event 这里我使用的的第三方库是libevent,其动态链接库和静态链接库的名字是libevent.a、libevent.so,此处我们不需要前缀“lib”和后缀“.a和.so”,只需要指明“event”。
以上就是今天讲述的内容,主要讲述简单使用VS2017开远程开发linux应用程序,并给出了使用第三方库的配置过程实例,关于自定义开发动态链接解决方案和静态链接解决方案实例见以下博主博文:
VS2017环境下开发Linux程序