位置: 编程技术 - 正文

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启动的过程)

  • 企业用于职工的个人住房是否可以不缴纳房产税?
  • 物流辅助服务税率
  • 预付账款借方怎么处理
  • 运输发票抵扣税怎么算
  • 坐收坐支在会计上如何反映
  • 阿里巴巴新任董事长简历
  • 自制发票和增值税发票的区别是什么?
  • 培训费的进项需要转出吗
  • 企业所得税税前不得扣除的项目
  • 长期待摊费忘记摊了怎么办
  • 我的初级备考经验,认真就有收获
  • 企业收到退款应该如何做会计处理?
  • 总公司与分公司的税务关系怎么交税
  • 联想笔记本bios密码忘记了怎么清除
  • win11进入黑屏
  • 企业拆迁补偿款税务最新政策
  • 普通发票的进项票怎么做分录
  • 销售产品出去 怎么做科目
  • 股权转让个税怎么缴纳
  • jQuery+Ajax+PHP“喜欢”评级功能实现代码
  • 处理固定资产的账务处理
  • 哪些人可以享受二级医保
  • 招标单位收取标书费多少钱
  • yii2框架从入门到精通pdf
  • 房产税和城镇土地使用税需要计提吗
  • 分公司股东怎么填
  • 流动资产金额
  • YOLOv8(n/s/m/l/x)&YOLOv7(yolov7-tiny/yolov7/yolov7x)&YOLOv5(n/s/m/l/x)不同模型参数/性能对比(含训练及推理速度)
  • php curl_init
  • sql1000*1.0
  • 命令行延时
  • python处理mysql如何拿到表头
  • 企业对外担保能收担保费吗
  • mongodb介绍
  • 工业企业提供劳务
  • 停工期间工资支付标准
  • 企业所得税计提分录
  • 企业所得税包含营业外收入吗
  • 企业不交所得税的情况
  • 差旅费 包括
  • 做账是指做什么
  • 出口货物没有进项发票用什么平台申报
  • 建筑公司工程款税率
  • 小规模纳税人缴纳本月未交增值税
  • 房地产企业账务处理所用科目
  • 跨年的施工项目成本
  • 应交税费附加税明细科目
  • 融资租赁收到的租金计入什么科目
  • 2023年职工养老保险缴费标准
  • 会计每月账务处理流程
  • 二类银行卡是什么卡
  • 怎么判断政府
  • Windows Server 2003将于7月14日停服 想用收费
  • centos怎么连接远程服务器
  • 虚拟机怎么安装exe文件
  • win8怎么分配磁盘空间
  • centos 安装chia
  • efi怎么安装系统
  • 怎么解决xp不能安装软件
  • 在操作系统中如何创建一个新的用户
  • c:windowssys:em32mtgyu.dll 内存分配访问无效的解决办法
  • win7电脑能玩啥游戏
  • Bullet(Cocos2dx)之封装PhysicsWorld3D
  • Unity符国新:3D技术将渗透到生活的各个方面
  • bootstrap需要学多久
  • css里注释
  • 如何使用css设置元素的层叠效果?
  • unity物体边缘发光
  • nodejs跳转到指定页面
  • Linux系统安装字体
  • js nextSibling属性和previousSibling属性概述及使用注意
  • jquery中ajax跨域方法实例分析
  • python 聚类算法包
  • js判断鼠标位置是否在元素区域内使用
  • python怎么生成随机函数
  • frontpage网页表单
  • 编写javascript代码
  • android背景图片透明度alpha
  • 自然人电子税务局网页端
  • 免税证明怎么开?(国税局已回复)
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设