使用vs编译so库,很多复用的cpp文件在不同的so中,调用这些so的时候会有崩溃等等各种问题,就是因为虽然复用了接口,但是内部实现不完全相同,而Linux使用接口又与windows不一样,导致不是理想状态使用自己库中的函数接口,一个简单的解决办法,使用显示指定接口:-Wl,--retain-symbols-file=/home/projects/$(ProjectName)/retain_symbols.sys -Wl,--version-script=/home/projects/$(ProjectName)/version_script.map,这两个文件里的内容也很简单,

retain_symbols.sys:

Test_api1
Test_api2

version_script.map:

{
global:Test_api1;Test_api2;
local: *;
}; 

基本这样就可以解决问题了,不用去挨个改接口名字了。

还有一种是用-fvisibility=hidden的方式,在代码级别就做出变动,我还没有尝试过。

更新,还有一个办法,是研究android studio编译库冲突时发现的,使用-Wl,-Bsymbolic参数,限定库优先使用内部函数,在ld报错时查找到的:http://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html ld的参数说明,也是看了这个参数说明才知道,上面的指定函数接口的参数与-s、-S(strip)的使用是冲突的。

防止Linux库so中的接口冲突相关推荐

  1. 精短高效的XML解析器,纯C单一程序,应用于银行的国税库行横向联网接口系统中,稳定可靠,运行速度飞快

    来源于:http://www.ej38.com/showinfo/c-xml-169407.html 供各位参考 精短高效的XML解析器,纯C单一程序,应用于银行的国税库行横向联网接口系统中,稳定可靠 ...

  2. linux 交叉编译工具中没有libc和liblog库文件,NDK无法找到动态链接库;动态链接库找不到依赖的gcc库;JNI中无法找到要注册的类;and so on...

    这是一篇头一次做NDK开发,记录了踩坑,杂乱无章的错误记录,仅供参考. 待解决Android运行NDK程序无法加载库,无法找到库,缺失库文件,找不到c库,导致我的Android NDK程序直接崩溃退出 ...

  3. 怎么把dll库写成MATLAB接口,如何在Matlab中应用动态连接库接口技术

    1 引言 Matlab是当前应用最为广泛的数学软件,具有强大的数值计算.数据分析处理.系统 分析.图形显示甚至符号运算等功能.利用这一完整的数学平台,用户可以快速实现十分 复杂的功能,极大地提高工程分 ...

  4. linux 安装程序丢失链接动态库,Linux安装软件过程中提示缺少动态链接库.so的解决方法...

    Linux在安装软件的时候有时会出现错误,提示缺少动态链接库.so,该问题是由什么原因导致的呢? 情况分析: 1.缺少动态连接库.so-cannot open shared object file:N ...

  5. linux complete函数,Linux驱动中completion接口浅析(wait_for_complete例子,很好)

    completion是一种轻量级的机制,它容许一个线程告诉另外一个线程工做已经完成.能够利用下面的宏静态建立completion:                          DECLARE_C ...

  6. linux C语言多线程库pthread中条件变量的正确用法逐步详解

    linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群. 关于条件变量的典型应用,可以参 ...

  7. Linux(Centos7.8)中conda虚拟环境搭建LSTM神经网络基于django3.1.2的api接口

    目录 1.准备工作 2.项目需求 2.1 根据需求下载LSTM依赖包 2.2 代码实现 3.启动服务 4.第三方应用调用webapi服务提供的api接口 1.准备工作 由上一博客Linux(Cento ...

  8. Android开发——如何解决三方库中的类名冲突问题

    文章目录 背景 一.尝试复现 二.初步想法 三.继续思考 3.1 源码引入 3.2 是否可以经过二次混淆改名 3.3 Android Transform 3.4 直接修改本地aar文件 3.4.1 找 ...

  9. Linux下C++中可使用的3种Hook方法

    Hook即钩子,截获API调用的技术,是将执行流程重定向到你自己的代码,类似于hack.如使程序运行时调用你自己实现的malloc函数代替调用系统库中的malloc函数.这里介绍下Linux下C++中 ...

最新文章

  1. STM32初学Keil4编译时出现 Error:Failed to execute 'BIN40/Armcc'
  2. 网络编程学习笔记(RES_USE_INET6解析器选项)
  3. 小学计算机考查方案,宋家塘街道中心学校2020年理化生实验操作和信息技术考试方案...
  4. ASP.NET MVC实践系列6-Grid实现(上)
  5. 针对WildFly和EAP运行Java Mission Control和Flight Recorder
  6. 5月购机指南!新机流畅度排行榜:第一名实至名归
  7. C++第一次试水写cstring类
  8. 第2章:知识表示--实践:Protégé本体构建
  9. C#反射Activator
  10. Struts——开源MVC框架
  11. SVM详解(一)线性可分支持向量机与硬间隔最大化
  12. 【伊利丹】Hadoop-2.5.0-CDH5.2.0 版本升级和数据均衡 实验记录
  13. ISO 3166-1代码列表
  14. WPF使用MEF插件开发打造自己的工具箱
  15. 让电脑桌面的壁纸动起来吧—Wallpaper Engine
  16. 央视315晚会 惠普“雪花屏”门被搬出 垃圾惠普
  17. 脚本一键部署(dhcp、dns、pxe、raid、nfs+apache+expect、lvm、磁盘分区、监控资源)
  18. 云桌面技术初识:VDI,IDV,VOI,RDS
  19. C语言实现矩阵旋转输出
  20. PHP基础——相册管理系统的实现

热门文章

  1. POJ 1753 Flip Game(回溯)
  2. erp故障处理流程图_PLC故障常见原因及处理方法!
  3. VC.NET字符指针与String的转换
  4. c语言实现ftp网络应用程序,使用C语言socket实现windows pc与ftp服务器通信---socket实现ftp客户端...
  5. 离散系数的计算公式_如何求不同变量之间的离散程度
  6. LeetCode之简单回文数
  7. ReactiveCocoa中潜在的内存泄漏及解决方案
  8. Android组件化方案及组件消息总线modular-event实战
  9. 论文浅尝 | Wordly Wise(WoW) - 用于语音视觉知识问答的跨语言知识融合模型
  10. 征稿 | Call for papers on Knowledge Graphs