位置: 编程技术 - 正文

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

  • 税务金三系统是什么?
  • 固定资产清理结转到什么科目
  • 汇算清缴税费怎么入账
  • 收到社保局返还的应届毕业生补贴
  • 金蝶财务软件固定资产模块固定资产调拨
  • 季度预缴所得税可以不交吗
  • 电费做其他业务收入的账务处理怎么做?
  • 投资办厂协议
  • 月底结转都结转什么
  • 出口不退税怎么做账
  • 小企业开发票了还能零报税吗?
  • 红字发票信息表填好后再怎么操作
  • 餐饮定额发票可以用吗现在
  • 非营利组织取得稳岗补贴收入要交税吗
  • 进项抵扣抵扣
  • 消费税为什么不计入长投成本
  • 委托加工物资的消费税
  • 转让境外股权损失能否税前扣除
  • 汇算清缴前可以更改去年的账吗
  • 应收和预收可以抵消吗
  • 公司出售车辆
  • 系统安装的步骤
  • 公司从超市购买东西缴纳印花税吗
  • 政策性退税流程
  • 仙鹤草的功效与作用与主治功能
  • 固态硬盘近年价格走势
  • 稿酬所得的个税怎么计算
  • 今天端午节是几月几号啊
  • php事务特性
  • 金蝶科目明细表
  • 税负太高会预警吗
  • 什么叫含税和未含税区别
  • pytorch教程
  • web应用技术是什么
  • 视觉slam有多难
  • cpu power management设置
  • 保障金是低保吗
  • 研发费用税前加计扣除金额怎么算
  • 支付招聘网站费用怎么入账
  • Linux常用命令与vim
  • wind安装
  • 开发日志模板
  • 所得税申报表里季初资产是指什么
  • 什么情况纳税
  • 食堂的帐怎么做
  • 租出的固定资产
  • 收到政府补助的会计分录
  • 当月的银行日记账漏计怎么办
  • 产权交易所交易流程
  • 磅差怎么开票
  • 直接减免税款的例子
  • MySQL-tpch 测试工具简要手册
  • sql server 操作
  • mysql安装与配置的步骤与常用命令
  • mysql批量添加字段
  • mysql怎么修改数据表
  • vsftpd.service disabled
  • 光盘做镜像文件
  • pcs system
  • 丢失acui16.dll
  • win10系统怎么设置开机启动项
  • linuxvi编辑器三种模式
  • win8怎么进去安全系统
  • js抓取网页内容
  • 断开网络联结的手机
  • python中ridge
  • python过程中遇到的问题
  • 提出好的建议
  • jQuery 3.0 的 setter和getter 模式详解
  • 国家税务局通用定额发票查询
  • 广州地税电子税票查询
  • 企业的绿化用地暂免征收土地使用税
  • 浦东税务15所
  • 小微企业印花税的税率是多少
  • 如何提升基层党建质量
  • 纳税人信用信息
  • 深圳国税咨询电话是多少
  • 车船税与船舶吨税法律制度ppt
  • 扬州退契税政策
  • 云南省税务局召开的会议
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设