linux 版本_Linux动态库版本号作用机制

熟悉linux的都知道,linux的动态库如果有版本号的话,一般是libsample.so.x.y.z这样的名字。

x.y.z对应的就是major.minor.release(即主.次.发布)版本号

  1. Major:大版本更新,前后都不兼容(比如移除api,又新增api)

  2. Minor:小版本更新,一般来说是向前兼容的(即1.2.1是可以用在1.1.0的环境的)

  3. Release:就是解决内部的问题,api没任何变化。

另外除开libsample.so.x.y.z这个文件,一般还会有两个文件

libsample.so > libsample.so.x.y.z

libsample.so.x > libsample.so.x.y.z

libsample.so.x.y.z

其实前两个文件都是软连接到第三个文件的。

  • 首先来看编译连接时

简单来说:“是通过一个最容易的名字libsample.so,找到真实的文件libsample.so.x.y.z,然后取得它的运行时名字libsampe.so.x”

直接看图

726c4ab4386e3e2fc659255c0c46788e.png

编译连接过程

  • 再来看运行加载时

简单来说“是通过运行时名字libsampe.so.x,找到链接文件ibsampe.so.x,从而定位真实文件libsample.so.x.y.z

97d5ea431067a734751e5d695c1f479b.png

运行加载过程

  • 兼容,怎么做到的?

假设运行系统目前已经有了下面三个文件:

libsample.so    -->libsample.so.1.1.1

libsample.so.1  -->libsample.so.1.1.1

libsample.so.1.1.1

另外一个执行文件foo依赖ibsample.so.1 。

兼容升级:

当升级libsample.so.1.1.1为libsample.so.1.2.0时,只需要将连接重新指定

libsample.so.1  -->libsample.so.1.1.1   //修改为

libsample.so.1  -->libsample.so.1.2.0 

不用重新编译foo

不兼容升级:

当升级libsample.so.1.1.1为libsample.so.2.0.0时,可以保持原来的状况不变

libsample.so.1  -->libsample.so.1.1.1

//添加新的文件

libsample.so.2  -->libsample.so.2.0.0

这样保证,

  • 旧的foo 依赖libsample.so.1.1.1可以继续运行;

  • 新的foo2依赖libsample.so.2.0.0也可以继续运行。

还有疑问的话,就在实际环境验证吧45843b6d524734088197426b22321ebb.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arcgis在面内创建随机点

在数据管理工具下选择要素类,在要素类下选择创建随机点

python中osgeo库使用教程链接

1. 地理数据处理软件包GDAL简介 2. GDAL python教程(1)——用OGR读写矢量数据 3. GDAL python教程(2)——几何形状geometry与投影projection4. GDAL python教程(3)——过滤器,简单的空间分析&…

winform 判断控件有没有被遮挡_编程入门基础之 winform(2)

在编程入门1中,我们通过WINFORM等控件画出了登录界面,我们今天写登录界面的登录按钮事件。装修预算小程序登录按钮事件在上图中,我们看到了,有几个判断 ,在C#中,if ,else是作为条件判断语句来使用。条件判断…

利用python读取点矢量对应栅格值

每行代码都有详细注解 所需库 # GDAL是栅格和矢量地理空间数据格式的转换器库 # 旧版本加载库的方法 #import gdal,gdalconst # from 语句让你从模块中导入一个指定的部分到当前命名空间中 # GDAL数据驱动,与OGR数据驱动类似 gdal是读取栅格数据 ogr是读取矢量数据 # 查看支持…

解决input设置背景后,在ie7下浏览内容过长背景跟着滚动

先发发牢骚,万恶的IE啊。这么点问题害我走弯路,浪费时间,浪费生命。本以为加上background-attachment:fixed;问题就没了,结果问题依然存在,查资料说好像是ie bug。无语,天杀的IE,谁叫人家IE是老…

利用python读取栅格数据

代码具有详细说明注释 所需库 #gdalconst中的常量都加了前缀,力图与其他的module冲突最小 from osgeo import gdal,gdalconst from osgeo import gdal_array as ga # 用于引入一个模块的同时为该模块取一个别名 from osgeo.gdalconst import GA_ReadOnly# 开始对栅…

从零开始破解WEP、WPA无线网络

以前出差时在机场用过无线网络,小区内是否也有无线网络呢?随便一搜,果然有几个无线网络信号,于是打起了免费蹭网的主意,但信号最好的几个网络的WEP或WPA密码成为了一个门坎,于是在公司上网查到相关资料&…

python读取栅格gdal库下载链接

gdal下载链接 安装 再下载后的文件所在文件下的路径 在此输入cmd

spectral安装

Spectral Python (SPy) 是一个纯 Python 模块,用于处理高光谱图像数据。它具有读取、显示、操作和分类高光谱图像的功能。 SPy 需要 Python 并依赖于其他几个免费提供的 Python 模块。在安装 SPy 之前,您应该确保满足其依赖项。虽然您可以仅使用 Python…

python将字典作为参数传入函数

示例 max_d {"scholl":123} print(*max_d) print(**max_d) 运行结果 scholl Traceback (most recent call last):File "D:/pythonProject1/test.py", line 3, in <module>print(**max_d) TypeError: scholl is an invalid keyword argument for …

SaaS窘境[欣赏然后翻译之]

Piaoger按&#xff1a; 还是SaaS窘境&#xff0c;只不过这次是翻译了一篇不错的英文Blog&#xff0c;翻译的过程很苦&#xff0c;有些地方至今也还觉得生涩&#xff0c;慢慢改吧。 不过怎么说&#xff0c;收获良多&#xff0c;无论是SaaS&#xff0c;还是Disruptive Innovation…

解决IDL检索COM类工厂中CLSID为{ }组件注册失败

作者用的envi版本为5.3 在第一次利用C#对IDL进行二次开发出现组件注册失败 解决方法&#xff1a; 亲测有效 以管理员的身份运行命令提示符 然后在文本框内输入即可解决 C:\Windows\System32\regsvr32.exe "D:\Program Files\Exelis\IDL85\resource\bridges\export\CO…

win7上安装wince6.0

先在 Win 7 上装 WinCE 6.0会出现如下问题&#xff1a; 1、ToolsMsmCA(Error): Setup package issue or CoreCon DataStore corrupted: CDeviceSDKInstallShim Add/Remove failed. HR0x8007005。 2、ToolsMsmCA(Error): Setup package issue or CoreCon DataStore corrupted…

arcgis缓冲后在envi中聚类出错

问题&#xff1a; arcgis将某一矢量缓冲后&#xff0c;将非研究区的nodata值改为-9999&#xff0c;后在envi中聚类&#xff0c;发现只分成两类&#xff0c;研究区和非研究区 解决 将-9999改为nodata值这样非研究区就不会参与计算

dem聚类只能成为一类

将各个图层分类后在进行聚类

VMware下桥接设置

操作环境 主机&#xff1a;Win7 X86 SP1 虚拟机&#xff1a;VMware station 8 虚拟机里的系统&#xff1a;Fedora 15 环境上&#xff0c;不管什么系统&#xff0c;什么版本的虚拟机&#xff0c;使用上都是大同小异的&#xff0c;毕竟核心是不变的。 VM虚拟机下linux系统&am…

分享21个丰富多彩的 HTML5 小游戏

作为下一代的网页语言&#xff0c;HTML5 拥有很多让人期待已久的新特性。HTML5 的优势之一在于能够实现跨平台游戏编码移植&#xff0c;现在已经有很多公司在移动设备上使用 HTML5 技术。随着 HTML5 跨平台支持的不断增强和智能手机的迅速普&#xff0c;HTML5 技术有着非常好的…

我算是优秀的程序员吗?

介绍我已经工作5年之久&#xff0c;但我还纠结于是不是优秀的程序员&#xff0c;怎样做优秀的程序员这些问题当中。心态我经常问自己&#xff0c;我算是优秀的程序员吗&#xff1f;有的时候我觉得自己是优秀的程序员&#xff0c;什么时候呢&#xff1f;当我解决问题的时候&…

quick time不可用是什么意思_fpga是什么意思(fpga怎么用)

1、不熟悉 FPGA的内部结构&#xff0c;不了解可编程逻辑器件的基本原理。FPGA为什么是可以编程的?恐怕很多菜鸟不知道&#xff0c;他们也不想知道。因为他们觉得这是无关紧要的。 他们潜意识的认为可编程嘛&#xff0c;肯定就是像写软件一样啦。软件编程的思想根深蒂固&#x…