位置: 编程技术 - 正文

linux 下同名符号冲突问题解决方案(linux同名文件)

编辑:rootadmin

推荐整理分享linux 下同名符号冲突问题解决方案(linux同名文件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux替换同名文件,linux复制同名文件会覆盖吗,linux命名别名,linux同名文件,linux查找同名文件,linux 名字,linux命名别名,linux复制同名文件会覆盖吗,内容如对您有帮助,希望把文章链接给更多的朋友!

linux 下同名符号冲突问题解决方案

最近的工作中遇到如下令人蛋疼的问题:

Linux 下有三个模块aa、bb、cc,基本情况如下:

cc 编译连接得到 cc.so 动态库,cc 中有如下接口:

bb 编译连接得到 bb.a 静态库,bb 中有如下接口:

aa 编译后通过 -lbb 链接选项的方式连接 bb.a 得到 aa 可执行程序,并调用 bb.a 的接口函数 bb_fun():

工作中发现 aa 在运行时行为异常,总是有内存泄露和功能异常,通过定位发现问题集中在同名的 do() 函数上。通过输出打印发现程序中两次调用 do() 函数都调用到了 bb 模块中的 do() 函数,而 cc 模块中的 do() 函数从未被调用到,导致程序行为异常和内存泄露。

linux 下同名符号冲突问题解决方案(linux同名文件)

后经多方查证了解到因为 linux 程序中各个库中的符号表最终都会加载到程序所在的全局符号表中,此时如果有同名符号就只能调用到第一个加载进来的符号,也就是说后边加载的同名符号都会被之前的覆盖。cc 模块中的 do() 函数被 bb 模块中的 do() 函数覆盖了,所以无法被调用到。

废话不多说。。。

在试验过很多不满意的方法之后,最终的解决方法如下:

1.在 cc 的 makefile 中加入 -Wl,-Bsymbolic -Wl,--version-script,version 的连接选项,意思是用 version 文件中的脚本指定其导出哪些函数。

2.version 文件的实现如下:

意思是指定 cc 模块只导出接口函数 cc_fun,其余函数都设为 local 不做导出。

将该文件保存在 makefile 所在目录即可。

3.重新编译连接三个模块,问题解决。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Linux启动过程详细介绍 Linux启动过程详细介绍启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找

shell通过遍历输出两个日期范围内所有日期的方法 前言在平常c/c++开发中经常遇到日期处理的情形,例如求两个给定的日期之间相差的天数或者需要使用map存储两个固定日期范围内的所有日期。前段时间

利用Shell 脚本解决DDOS攻击问题 思路:主要利用awk,if结构,sort,uniq#!/bin/bashFilePath="access.log"awk'{print$1}'$FilePath|sort-rn|uniq-cip_count.logcatip_count.log|whilereadtext####读取文件内容,以行为单位

标签: linux同名文件

本文链接地址:https://www.jiuchutong.com/biancheng/378205.html 转载请保留说明!

上一篇:linux下tomcat常用操作(linux tomcat命令)

下一篇:Linux启动过程详细介绍(linux启动的过程)

  • 购买财务软件的会计分录怎么做
  • 附加税的计算公式2023
  • 公司基本户可以转私人账户吗
  • 预付账款长期挂账风险
  • 为什么纳税申报
  • 生产成本存货会计分录
  • 企业清算所得税申报表清算期间
  • 短期借款,应付票据,应付账款和应交税费属于
  • 应付账款扣除商业折扣
  • 出差出了事故怎么处理
  • 企业计提预提费用的会计分录如何编制?
  • 待处理财产损益是什么意思
  • 自行建造固定资产的计税基础
  • 在汇兑结算方式中汇入行对流行代取的款项应先转入
  • 预付的账款属于
  • 小规模纳税人2018
  • 有税收完税证明还需要发票吗
  • 房产印花税缴纳
  • 小规模增值税怎么做账
  • 积分返现活动
  • 没有税务章的收款收据怎么做账?
  • 地方教育附加可以在企业所得税前扣除吗
  • 农产品收购销售免税吗
  • 苹果电脑的删除
  • 境内单位和个人将船舶出租到境外的,不征收车船税
  • 调整以前年度的收入怎么入账
  • 常见的四种POST 提交数据方式(小总结)
  • phpcms手册
  • 已删除好友的聊天记录
  • win11专业版网卡安不了
  • 增值税专票开错了可以作废吗
  • 固定资产未计提完毕怎么报废
  • 将债务转为资本的,债务人应当将债权人
  • 最贵的苹果电脑99万
  • 会计怎么区别法定维修义务和合同义务
  • 网上打印企业征信报告
  • 视听结合的景物描写
  • 论文导读怎么做
  • 拦截器拦截html
  • 养老保险进账金额
  • 城镇土地使用税减免税政策
  • mysql中union什么意思
  • okhttp源码
  • 无形资产收益额的具体测算方法有
  • 主营业务收入在哪个报表里面
  • 政府会计的会计要素有哪几个?会计要素之间的关系如何?
  • 小规模纳税人给别人开票的税点多少
  • 采购原材料未入库
  • 固定资产一次性扣除政策
  • 资产减少的方式有哪些?
  • 员工出差报销补贴政策
  • 什么是残保金减免政策
  • 加计扣除的会计要素
  • 筹建期发生的费用怎么申报
  • 广告公司收到广告收入会计分录
  • 支付进口增值税
  • 场地租赁费属于什么税收分类编码
  • 企业营改增后的会计处理有何变化
  • 如何给初建单位发邮件
  • 算账的意思是什么?
  • sql常用的语句大全
  • oracle的账户
  • 机箱前面板是哪里
  • win10新界面曝光
  • win10如何删除windows账户
  • 开始菜单里没有设置选项
  • [置顶] [寒江孤叶丶的Cocos2d-x之旅_27]CocoStudio导出的LUA文件怎么使用?
  • node操作mongodb数据库
  • python accdb
  • nodejs 插件开发
  • android ndk cmake
  • 详细的收藏
  • jquery实现(textarea)placeholder自动换行
  • 让图片垂直居中
  • linux怎么使用shell脚本
  • svn如何cleanup
  • jquery操作元素内容的方法
  • javascript调用c语言
  • 详解Python中的Descriptor描述符类
  • 海关进口增值税专用缴款书在哪里打印
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设