VS2017版本现已支持开发Linux项目,就是在VS上面写代码,而编译和运行是在Linux环境下。

使用场景:

假如,代码最终是运行在Linux系统上,而我们又不想在Linux环境下写代码,想借用VS强大的开发功能做开发,那么就可以在VS上面创建一个Linux项目。

设置:

项目建好之后,需要设置远程连接,指定代码最终要运行的目标平台。

编译:

项目编译的时候,VS会把代码拷贝到Linux对应目录下面,然后调用Linux的g++对项目进行编译。编译过程中如果有什么错误都会显示在VS的编译输出中,就跟开发普通Windows程序一样。

调试:

调试的时候也可以给代码下断点,实际的调试工作是Linux环境中gdb干的,VS中只是显示调试信息。这样调试起来要比在Linux环境下方便很多。

使用演示:

下面简单演示一下使用VS创建Linux程序:
这里写图片描述
创建好之后,需要准备好Linux环境,确保Linux环境中已经安装了g++ gdb gdbserver。
例如,我是在虚拟机中装了一个CentOS系统,按照VS提供的教程,运行yum install openssh-server g++ gdb gdbserver,安装好相关软件。

在运行的时候提示gdbserver没有安装,后来在CentOS里面运行yum install gdb-gdbserver安装了gdbserver就好了。
在我们第一次编译运行项目的时候会提示连接Linux主机
这里写图片描述

选项内容
Host nameLinux主机ip地
Port使用默认22
User nameLinux系统中的用户名,例如,root
Authentication type选用Password
Password用户密码

连接好之后,就可以运行程序了。
通过 调试->Linux控制台 可以看到运行结果
这里写图片描述

使用技巧:

在开发过程中需要注意的是,许多Linux系统头文件在Windows本地没有。所以,在编写代码的时候,如果包含Linux系统文件,IDE会提示没有找到头文件或者找不到符号等问题(实际编译是没有问题的,因为编译是在Linux环境下编译的,相应的头文件也能找到)。使用VS进行开发的目的就是便于开发和调试,没有了代码补全和提示,那和使用vim就没多大区别了。

对于这个问题,可以这样解决:将Linux系统下/usr/include/ 目录下的文件全部复制到Windows下的C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\Linux\include\usr\local目录下。这样IDE就能找到这些头文件了,在编写代码的时候也就能很好的使用VS各种补全功能,大大方便了开发。
如果要引用Linux下系统目录之外的头文件,要在项目属性附加包含目录中添加,添加的路径是Linux下路径,如:/home/myproject/include。

编译过程中如果需要用到的静态库,就要在项目属性中:链接器->常规->附加库目录中添加对应的库路径(写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

对于有些头文件也需要配置在Windows本地,这样只是为了方便编码。配置的方法就是,在项目属性->VC++目录->包含目录,这里配置就可以,实际上对于Linux项目来说,这里可配置也可不配置,配置只是为了IDE找到头文件,方便编码。

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:1 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐