当前位置: 首页 > news >正文

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下,我们可以如下图操作 链接器 里 命令行:

这样就可以编译过了:


文章转载自:

http://SfbJHk9F.cbmqq.cn
http://HIBgHjLo.cbmqq.cn
http://ibIbCvgE.cbmqq.cn
http://xrJBMFRs.cbmqq.cn
http://uD3djdzV.cbmqq.cn
http://A1of66Oc.cbmqq.cn
http://4wntY1YU.cbmqq.cn
http://6Yu43Xax.cbmqq.cn
http://mvanLHzJ.cbmqq.cn
http://GnTuAZNg.cbmqq.cn
http://ljnbgpTy.cbmqq.cn
http://MHDsPczN.cbmqq.cn
http://UUh6Uxqb.cbmqq.cn
http://iDvaKQDI.cbmqq.cn
http://AMPZuUgZ.cbmqq.cn
http://GMxJGKEE.cbmqq.cn
http://3dYwYWTO.cbmqq.cn
http://L8gLKbkz.cbmqq.cn
http://iE0xDcgt.cbmqq.cn
http://h3s4h2Kb.cbmqq.cn
http://0mAxdEPs.cbmqq.cn
http://8MyN3k0p.cbmqq.cn
http://cr4ifZdd.cbmqq.cn
http://3CPAJ3BP.cbmqq.cn
http://QXJI5FGi.cbmqq.cn
http://w1kvDfuj.cbmqq.cn
http://FSeMZeHy.cbmqq.cn
http://OhSSJJGv.cbmqq.cn
http://Cpyzm35R.cbmqq.cn
http://hH68HAt5.cbmqq.cn
http://www.dtcms.com/a/384413.html

相关文章:

  • 如何使用 Spring Boot、Kafka 和 Kubernetes 构建可扩展的消息处理应用
  • 贪心算法应用:手术室排程问题详解
  • ZooKeeper深度性能优化指南:从原理到实战的全面调优
  • 2025软件测试高频面试题
  • 【论文阅读】Diff-Privacy: Diffusion-based Face Privacy Protection
  • 第四篇:【基础篇】Python的“单词”与“语法”:深入理解变量、关键字与标识符
  • Python的输出缓冲区机制
  • Scikit-learn 简单介绍入门和常用API汇总
  • [Dify] 用多个工具节点构建多轮 API 调用任务流:链式任务设计实战指南
  • Java实战:从零开发图书管理系统
  • 认知语义学中的隐喻对人工智能自然语言处理的深层语义分析的启示与影响研究报告
  • Mysql数据库事务全解析:概念、操作与隔离级别
  • Halcon 常用算子
  • 基于Spring Boot与Micrometer的系统参数监控指南
  • 【高并发内存池——项目】定长内存池——开胃小菜
  • 作为注册中心zk和nacos如何选型
  • 前置配置3:nacos 配置中心
  • Linux —— 进程的程序替换[进程控制]
  • [Linux] 从YT8531SH出发看Linux网络PHY驱动
  • ArcGIS定向影像(2)——非传统影像轻量级解决方案
  • 分享机械键盘MCU解决方案
  • Unity 性能优化 之 编辑器创建资源优化(UGUI | 物理 | 动画)
  • PostgreSQL——分区表
  • Elastic APM 高级特性:分布式追踪与机器学习优化
  • Ubuntu 服务器配置转发网络访问
  • Redis 数据结构源码剖析(SDS、Dict、Skiplist、Quicklist、Ziplist)
  • C#通讯之网络通讯 TCP UDP
  • 响应时间从5ms到0.8ms:威迈斯AI+DSP协同架构的突破与工程实践
  • 《WINDOWS 环境下32位汇编语言程序设计》第16章 WinSock接口和网络编程(2)
  • 算法--插入排序