位置: 编程技术 - 正文

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

  • 中国税务师协会税务师官网
  • 什么是明细分类账簿
  • 政府补助属于不征收收入汇算清缴怎么填写
  • 员工出差自驾怎么看待
  • 计提坏账准备怎么理解
  • 老板从公司拿钱怎么拿税最低
  • 处置子公司全部股权会计处理 企业会计准则
  • 企业接受赠予企业固定资产是否免税
  • 简易征收纳税的税率为多少?
  • 公司预支了然后来报销的帐怎么做?
  • 广告公司制作警示牌可以开具什么样的发票?
  • 诉讼费走哪个会计科目
  • 不动产经营租赁属于现代服务吗
  • 公司给客户退款会计分录
  • 土地储备机构也称为什么
  • 其他综合收益包含哪些科目
  • 技术研发阶段的费用如何做分录
  • 捐助建学校
  • 应交增值税进项税额月底怎么处理
  • 销项负数发票与红字发票
  • 发票申领需要什么资料
  • 小微企业免征增值税条件
  • 股权转让企业所得税如何申报
  • 多交附加税怎么做账
  • 银行交纳进口关税政策
  • 老毛桃u盘启动盘制作工具怎么安装win10系统 老毛桃u盘安装win10系统图文教程
  • 配股的基本含义是什么
  • 优先股分类为金融负债
  • win11怎么打开虚拟内存
  • smarty模板判断数组为空的方法
  • 虚假财务报表的案例
  • 今天端午节?
  • 销售食品分录
  • 池塘里的水结冰了
  • 拉德克里夫图书馆
  • 分布式简介
  • 会计准则对企业行为的影响分析论文
  • 购买方收到的违约金计入
  • 纳入资本公积
  • vue3 + ts
  • vue鼠标悬浮菜单
  • php 下载上传文件
  • php文件怎么浏览
  • 哈希表散列函数
  • /etc/rc.local添加内容
  • 个体工商户开税户
  • 辞退福利记入什么费用
  • python如何合并字典
  • 所得税预缴申报表
  • phpcms v9网页禁止复制
  • sql 临时表格
  • 商誉必须减值吗
  • mysql密码忘了
  • 金税四期有什么变化
  • 免征水利建设基金条件
  • 发票上的货物要怎么填?
  • 其他应收款科目核算哪些业务
  • 收到采购材料发票款未付会计分录
  • 社会保险中断后还可以续保吗
  • 进口关税减免政策
  • 固定资产的后续计量
  • 税控盘清卡时间
  • 进口料件内销的关税和增值税怎么计算
  • sql有哪些语句
  • sql基本教程
  • 同一个sql语句 连接两个数据库服务器
  • linux 命令帮助
  • centos设置服务自启动
  • centos6关闭图形界面
  • win7服务在哪里打开
  • 简单3招 让win10资源管理变得更方便简洁
  • unity做app开发
  • MVC Ajax Helper或Jquery异步加载部分视图
  • nodejs的流处理模块
  • JavaScript中setMonth()方法的使用详解
  • 菜鸟教程安卓
  • 贵州网上税务局官网登录
  • 新市税务所电话
  • 交完契税,房产证没办,契税能退吗
  • 委托人全权代理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设