位置: 编程技术 - 正文

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

  • 税务师厉害吗
  • 小规模纳税人不开票收入怎么报增值税
  • 工商年报纳税总额怎么算
  • 鉴证服务的税率有哪些
  • 房产出租增值税税目
  • 民非企业附加税入什么科目
  • 报销筹建期间的房租押金怎么做会计分录?
  • 增值税认证逾期怎么处理
  • 企业线上销售的好处
  • 由于审计环境的变化
  • 个人开增值税普票有没有限额
  • 3%征收率的应税服务
  • 对公账户提取备用金可以每天提现嘛
  • 承包方给发包方付费
  • 小规模附加税减免政策2023
  • 吸收合并具体分录
  • 多缴增值税怎么退税
  • 公转私限额多久自动解冻
  • 基建期增值税如何抵扣
  • mac系统怎么玩游戏
  • 一次性伤残补助金由谁支付
  • php制作一个表单
  • dsm是什么文件
  • 进货的折扣该怎么算
  • 分公司收到总公司拨款怎么做分录
  • php字符串赋值
  • php 首字母大写
  • 开发票金额少于付款金额差额怎么入账?
  • 融资租赁与经营租赁的联系
  • 哪一个国家有大提顿国家公园
  • php操作mysql数据库
  • 结存材料实际成本分录
  • 一般户和专户可以同一个网点吗
  • php返回数组中所有的值的函数是什么?
  • 资产负债表其他应收款计算公式
  • vscode终端显示
  • 教育费附加免税需要计提吗?
  • 没收的定金收入怎么入账
  • 收回已冲销的应收账款会计分录
  • 劳务是什么单位
  • 外贸企业出口退税
  • 资产处置收益项目有哪些
  • 应交增值税为负数是什么意思
  • 银行转账费用多少钱
  • 公司基本账户提额怎么算
  • 税款减免怎么做分录
  • 信息技术服务费属于什么费用
  • 公司的旅游费怎么处理
  • 个体工商户缴纳社保属于职工社保吗
  • 购买机器的运费计入什么科目
  • 税收优惠应计入那个科目
  • 发票金额太大怎么办
  • 餐饮怎么扣税
  • 设置包装盒
  • 在第一周
  • os x10.11el capitan公测版下载地址(公测版计划注册教程)
  • 如何创建mac系统安装盘
  • 启动游戏出现dmp的文件
  • mac safari浏览历史
  • win7无线网络开关在哪里
  • 实用的linux命令
  • win8应用商店下载
  • 怎么从win8装回win7
  • linux下VSFTP 530 Permission denied错误的解决办法
  • opengl绘制图形旋转
  • GLWallpaperService分析一
  • 个人简历
  • shell脚本数组的用法
  • lessons there是什么意思
  • jquery validator
  • 使用forever管理nodejs应用教程
  • android资源文件
  • linux怎么使用
  • jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
  • Developing for Android, IV: The Rules: Networking
  • python系统监控
  • 河南省发票查询真伪查询系统
  • 随子女定居外省好吗
  • 季度申报表如何填写
  • 武汉税务地区编号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设