对于经常做项目的人来说,一个项目经常会有多个依赖库和一个可执行文件,下面介绍如何利用VS2019来进行Linux项目开发

此处以我自己写的日志分级打印为例,先生成一个名为liblog.so的动态库,然后对这个动态库进行使用

一、项目目录结构

vs2019 开发python_vs2019 开发python

log为我的工程名,include用来存放头文件,project下的vs用来放工程,src为日志级别实现源码,test为试验代码

二、生成动态库(.so)

(1)创建一个空项目,并将存储位置设置为project下的vs

vs2019 开发python_动态库_02

(2)设置项目名称为“log”,位置project目录下的vs,这个时候一般会默认创建一个叫log的文件夹来存放新的工程,我一般都是把项目拷贝到vs目录下,然后将新建的文件夹删除

vs2019 开发python_linux_03

(3)打开工程,然后右键,选择“新建筛选器”(新建文件夹)

vs2019 开发python_linux_04

(4)选中“include”,右键添加新文件,然后头文件位置选择之前建好的include文件夹,点击添加

vs2019 开发python_vs2019 开发python_05

(5)同理在src中添加一个名为log.c的文件

vs2019 开发python_visual studio_06

(6)项目属性配置

此处根据linux服务器来确定32位还是64位,arm的我没碰到过呢,有兴趣的可以自己试一下

vs2019 开发python_linux_07

最上方配置栏选择“所有配置”,平台选择“所有平台”

输出目录配置:$(ProjectDir)..\..\lib\$(Platform)\$(Configuration)\

中间目录配置:$(ProjectDir)obj\$(ProjectName)\$(Platform)\$(Configuration)\

远程生成计算机选择自己Linux服务器即可

远程项目目录:$(RemoteRootDir)/projects/$(SolutionName)

配置类型:动态库(.so)

点击“应用”按钮,效果如下图

vs2019 开发python_动态库_08

(7)头文件依赖目录设置

附加包含目录:$(ProjectDir)..\..\include

vs2019 开发python_linux_09

(8)依赖动态库设置

线程库的引用,相当于gcc编译的-lpthread,此处不要加-l

vs2019 开发python_vs2019 开发python_10

(9)项目编译,此时目录结构如下,至此liblog.so动态库就生成了

vs2019 开发python_vs2019 开发python_11

vs2019 开发python_vs2019 开发python_12

三、使用动态库(.so)

1.新建一个log_test工程,跟log工程放在同一目录下(也可不在同一目录下),建好后效果如下

vs2019 开发python_右键_13

vs2019 开发python_动态库_14

2.设置项目依赖项

在“解决方案”处,右键选择“属性”,然后选择项目依赖项,因为log_test使用log生成的liblog.so动态库,所以log_test依赖于log

vs2019 开发python_右键_15

设置完成确定

3.log_test项目属性设置,注意此处输出目录为$(ProjectDir)..\..\lib\$(Platform)\$(Configuration)\,配置类型为应用程序(.out)

本地习惯用lib存放动态库,bin用来存放二进制文件,具体命名可根据个人喜好来

vs2019 开发python_右键_16

4.头文件路径设置跟上面一样

5.动态库路径和引用设置

此时引用liblog.so和pthread两个库,pthread为系统库,引用时不需要设置路径,liblog.so为自己写的库,需要设置路径

liblog.so库路径为$(ProjectDir)..\..\lib\$(Platform)\$(Configuration)(如果log_test和log在同一目录下,则liblog.so路径跟上述输出设置一样)

对于形如lib**.so这种,只需要写**就可以

vs2019 开发python_动态库_17

vs2019 开发python_vs2019 开发python_18

6.此时已经能编译通过了,注意“重新生成解决方案”会报头文件找不到错误,这个是VS2019的bug,如果需要重新编译的话建议先清理再编译,不要使用“重新生成解决方案”

7.调试设置

如果能够直接在windows上调试linux代码,那效率将大大提升,接下来我会详细说明如何配置调试环境

(1)设置远程生成后事件,将生成的动态库拷贝到二进制文件所在目录

拷贝命令cp -f $(RemoteProjectDir)/lib/$(Platform)/$(Configuration)/liblog.so $(RemoteProjectDir)/bin/$(Platform)/$(Configuration)/,如果有多个则需要进行多次拷贝,中间用分号(;)隔开

vs2019 开发python_vs2019 开发python_19

(2)在启动项目工程处右键选择属性,我这个工程中log_test为启动项目,所以对log_test进行属性设置

因为debug是用来调试,所以此时配置选项应改为“Debug”

vs2019 开发python_linux_20

(3)调试程序:/root/projects/$(SolutionName)/bin/$(Platform)/$(Configuration)/$(TargetName).out

         工作目录:/root/projects/$(SolutionName)/bin/$(Platform)/$(Configuration)/

         程序参数:如果有的话就填,如命令行输入test

         其它程序调试命令:set env LD_LIBRARY_PATH /root/projects/$(SolutionName)/bin/$(Platform)/$(Configuration)/

       

vs2019 开发python_linux_21

(4)按F5即可启动调试,test为命令行输出

vs2019 开发python_动态库_22

至此,VS2019进行Linux下动态库生成、使用及调试介绍完毕!