位置: 编程技术 - 正文

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

  • 计提附加税金额
  • 出口退税货物的进项税处理
  • 个人财产租赁所得税计算
  • 子公司分红对合并报表的影响
  • 缓缴税款到期缴纳罚款吗
  • 预计负债账务处理 固定资产
  • 实发工资比计提多汇算清缴要怎么处理
  • 施工企业实验用具费用计入什么科目
  • 办理完税务手续是否还需要报税?
  • 企业报社保可以用医保吗
  • 哪些员工福利可以让企业合理避税
  • 增值税普票销项负数会影响报销吗
  • 为什么中国没有工业革命
  • 企业开税票申报个人所得税怎么申报?
  • 工程分包是什么工作
  • 收到政府补助怎么发朋友圈
  • 个人所得税企事业单位承包经营所得
  • 防伪税控开票系统SOAP服务端
  • 高新企业产品开发的折旧费用可以税前扣除吗?
  • 物业公司安装监控为了什么
  • 公司注销银行账户流程
  • 开票人为什么不能改
  • 外贸出口退税会计和会计区别
  • 为什么win7系统添加语言包
  • 建筑公司小规模纳税人怎么做账报税
  • 苹果紧急提醒
  • 方正电脑u盘启动按什么键
  • 贷款利息不能抵扣进项税
  • 抵债资产账务处理程序
  • 小规模纳税人开票限额是多少
  • 物资销售经营范围
  • 酒店装修费用计入什么科目
  • 其他综合收益含税吗
  • 旅游企业税务筹划
  • 增值税专用发票电子版
  • Vue3通透教程【十四】TS复杂类型详解(一)
  • php自定义字段
  • 酒吧送酒的人叫什么
  • 企业的营业税金及附加
  • ussd命令
  • 预付账款和预收账款哪个是负债
  • phpcms文档
  • 食用油交税吗
  • 税前利润是否等于利润总额
  • 红冲以前年度收入
  • 承包经营所得个人所得税计算举例
  • 小企业如何进行内部创新
  • 企业过桥贷款违法吗
  • 公允价值模式下出售投资性房地产
  • 历年案例分析题及答案
  • 合并编制报表主要有哪几种
  • centosyum源
  • 大学里学分不满不让毕业是真的吗
  • 电脑上的win8键盘怎么打开
  • 通透Windows 2008系统状态变化
  • mac蓝牙连接iphone有什么用
  • macos sierra版本10.12.6升级
  • linux几种安装方式
  • linux服务器宕机排查
  • win7系统怎么更改默认浏览器
  • ssh密钥根据什么生成
  • 电脑操作系统win8
  • w10系统如何
  • win8怎么固定桌面图标
  • win10正式版发布时间
  • win7系统的excel在哪里
  • [置顶]游戏名:chivalry2
  • android打包原理
  • css网页布局在线生成
  • javascript的判断语句
  • Node.js中的事件循环是什么样的
  • android打开相机
  • 基于Android的人脸门禁系统
  • intent.setdata
  • opencvandroid开发实战
  • 电子税务局怎么删除办税员
  • 江苏国税电子税务局怎么登录
  • 居间服务费税收优惠政策
  • 盐城合作医疗在手机上怎么交
  • 年终奖怎么报个税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设