首页 > 系统相关 >Linux环境中动态库文件(.so文件)的realname,soname和linkname

Linux环境中动态库文件(.so文件)的realname,soname和linkname

时间:2023-01-17 16:46:58浏览次数:47  
标签:文件 realname lib soname so name

 

realname:

  • 实际等同于库文件的filename,是在库文件生成时就被指定的,如:gcc -shared -o $(realname) dependence flags
  • realname的一般格式为 lib$(name).so.$(major).$(minor).$(revision),$(name)是动态库的名字,$(major).$(minor).$(revision)分别表示主版本号,子版本号和修正版本号

soname:

  • 在库文件生成时被指定,如:gcc -shared -o $(realname) dependence flags -Wl,-soname,$(soname)
  • 其一般格式为lib$(name).so.$(major).$(minor),soname会被写入库文件中
  • 可以使用readelf -d $(realname)查看库文件的soname
  • 不同realname的库文件可以有相同的soname,有利于库文件的升级和兼容,例如当版本从1.0.0升级到1.0.1,库文件的接口没有变化(或者接口增加,但原有接口不变)的情况下,可以指定相同的soname,这样使用1.0.0生成的程序仍然可以运行。
  • soname在链接和加载库文件时使用,当时使用-l$(name)链接库文件时,链接器会读取lib$(name).so文件中的soname值,并将其记录在生成的程序中,当运行程序时,会从相应的目录加载名为$(soname)的文件,所以,在运行程序之前,$(soname)的库文件必须已生成,
  • 可以采用软连接的方式生成该文件,如:ln -s $(realname) $(soname)
  • 也可以使用ldconfig命令自动生成,如 ldconfig -n $(dir) 会生成$(dir)目录下所有库文件对应的$(soname)文件

linkname:

  • 在链接时使用,一般格式为lib$(name).so,通常是$(realname)文件或者$(soname)文件的软链接
  • 当使用-l$(name)选项时,链接器会从相应目录链接lib$(name).so的文件,如果该文件不存在,则会链接lib$(name).a文件,如果该文件也不存在,会发生链接错误
  • 如果链接的是lib$(name).a文件,在运行程序时也就没$(realname)文件和$(soname)文件什么事了
 

标签:文件,realname,lib,soname,so,name
From: https://www.cnblogs.com/lidabo/p/17058126.html

相关文章

  • python内存中生成excel和zip文件
    目录python内存中生成excel和zip文件直接返回Zip文件直接返回Excel文件内存中生成Excel文件再压缩生Zip文件python内存中生成excel和zip文件我们知道pandas和zipfile两个......
  • AS Android项目的layout文件无法自动补全android:id等基础属性字段
    问题:Android项目的layout文件无法自动补全android:id等基础属性字段<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.co......
  • Linux动态库soname的使用
    通过一个简单的例子,体验一下Linux动态库soname的使用。假设有一个动态库:libbar.so.1.1.0,其对应的三个名称如下。realname:libbar.so.1.1.0soname:libbar.so.1linkname:l......
  • Linux动态链接库.so文件的命名及用途总结
    我们在linux下开发项目,有时会对外提供动态库,像***.so.1.0.0这样子的文件,另外提供相应的头文件。用户拿到动态库和头文件说明,就可以使用动态库里的function。那随之而来......
  • Sonic--开源云真机测试平台
    读者提问:开源云真机测试平台有推荐的吗 ?阿常回答:有,Sonic。官网地址:​​https://sonic-cloud.gitee.io/#/Home​​Github地址:​​https://github.com/SonicCloudOrg​​部署......
  • 文件上传测试:Windows 创建指定大小的文件
    读者提问: 『我们测试文件上传时需要上传指定大小的文件,Windows如何创建指定大小的文件,有比较便捷的操作方法吗 ?』 阿常回答:fsutil.exe 创建指定大小文件指定内容生成指......
  • cat <<-EOF > /etc/yum.repo.d/centos72.repo 没有那个文件或目录
    cat不仅可以显示文件内容,还可以创建文件,但是遇到执行脚本时提示“没有那个文件或目录” 文件名:create_yum.sh1#!/bin/sh23repo_PATH=/etc/yum.repo.d/45cat......
  • python zipfile处理压缩文件
    目录pythonzipfile处理压缩文件ZIP文件入门什么是ZIPFile?为什么使用ZIPFiles?Python能处理ZIP文件吗?使用Python的zipfile操纵已存在的ZIP文件打开ZIP文件......
  • ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi
    摘要-本文提出了ORB-SLAM3,第一个系统能够执行视觉,视觉惯导以及多地图的SLAM系统,且该系统具有单目,双目,RGB-D相机模型,用针孔相机和鱼眼镜头模型。第一个主要的创新是基于特......
  • vue-cli/webpack4.x 打包--打包文件输出
    runtimeCompiler ture:runtime-compiler  template开发false:runtime-only     jsx语法开发publicPathvue.config.js中配置打包基路径p......