vs2019远程调试——设置远程机器上的include目录和so目录
一、背景
在之前的博客 vs2019进行远程linux用户态调试 和 linux上对于so库的调试——包含通过vs2019远程ssh调试so库 里,我们讲了通过vs2019这个调试起来比较方便的ide来做一些linux上的调试工作,通过ssh调试程序或者调试so库里的逻辑。
在这篇博客里,我们介绍如何借助vs2019里的配置参数,达到能通过-I或者-L来实现头文件目录或者库文件目录的设置,从而能直接复用现有的远程linux机器上的库,而不用再去拷贝一份到/usr/lib或者再赋值一份头文件到本地来。这样能进一步提高调试效率。
下面,我们通过一步步图示以一个例子来说明如何配置。
二、准备一个用于演示的库.cpp文件和库头文件并在linux上完成编译
mylib.cpp
// mylib.cpp
#include <stdio.h>int add(int a, int b) {return a + b;
}
mylib.h
// mylib.h
#ifndef MYLIB_H
#define MYLIB_Hint add(int a, int b);#endif // MYLIB_H
完成编译:
g++ -shared -fPIC mylib.cpp -o libmylib.so
和部署:
cp libmylib.so /usr/lib/x86_64-linux-gnu/
三、vs2019里新建一个源文件,并加上include这个头文件
上图里,增加了#include <mylib.h>,这个mylib.h并没有放到本地里,而是直接是远程linux上的文件。
四、在 链接器 里的 输入 一栏,加上mylib
右键解决方案资源管理里的testmylib项目,找到 链接器 里的 输入 一栏,加上mylib
系统会默认搜索一些目录,如/usr/lib、/usr/lib/x86_64-linux-gnu(x86平台)
五、C/C++里的命令行,增加-I来添加头文件所在目录(远程linux上的目录)
注意,上图里的目录就是远程linux上的目录
六、如果库不在几个系统默认会搜索的目录,需要自己配置-L的目录
如果执行如下命令,把库从第二步里放的/usr/lib/x86_64-linux-gnu/目录下挪走,放到比如/usr/lib/init目录:
mv /usr/lib/x86_64-linux-gnu/libmylib.so /usr/lib/init/
系统默认会找不到的:
如果库放在/usr/lib/init下,我们可以如下图操作 链接器 里 命令行:
这样就可以编译过了: