linux共享库

linux中共享库一般以.so.x.y.z 命名,其中x,y,z分别为主版本号、次版本号、发布版本号。同一个库,主版本号不同则相互不兼容;主版本相同,次版本号高的库比次版本号低的库有一些更新,增加了一些接口符号且保持原来的接口符号不变,但保持后向兼容;主版本号和次版本号相同,发布版本号不同,表示库的一些修改修正,不增加新功能。

SO-NAME软链接

SO-NAME 软链接:共享库 libname.so.x.y.z 的SO-NAME软链接命名为 libname.so.x 即去掉次版本号和发布版本号。其指向 主版本号为x的libname某一个库,一般为主版本号为x的最新的libname库。 
    程序在调用动态库的时候,通过库的SO-NAME软链接找到实际的库文件,进行调用。在系统中安装或者更新完库 libname.x.y.z 之后,需要执行ldconfig,用来新建或者更新libname库对应的SO-NAME软链接,让libname.so.x 软链接指向最新的库。

ldd命令

ldd命令用于查看程序需要哪些动态库。其实质是通过ld-linux.so 来实现的,ld-linux.so 模块会先于可执行程序工作,并获得控制权。实际上ldd exe,相当于执行/lib/ld-linux.so.2 --list exe

ld-linux.so

ld-linux.so是动态装载器的库文件,动态装载器用于程序执行时动态链接一些库。 
    启动一个程序时,ld-linux.so被调用,ld-linux.so检测程序依赖哪些动态库,然后搜索系统中是否存在所需要的动态库文件。其搜索的顺序为: 
1. LD_LIBRARY_PATH 指定的目录 
2. /etc/ld.so.cache 中的库路径(ld.so.cache 是 /etc/ld.so.conf 的缓存,用于快速查找,实际相当于查找 /etc/ld.so.conf 配置文件中指定的路径) 
4. 默认的库路径 /lib, /usr/lib

最新文章

  1. javascript 判断参数类型大全
  2. javascript 在ie8中报“缺少标识符、字符串或数字“问题再现:
  3. 背水一战 Windows 10 (7) - 控件 UI: VisualState, VisualStateManager, 控件的默认 UI
  4. 9.3---魔术索引(CC150)
  5. OI再见
  6. iOS archive(归档)的总结 (序列化和反序列化,持久化到文件)
  7. bzoj1054: [HAOI2008]移动玩具
  8. ZOJ 2750 Idiomatic Phrases Game(Dijkstra)
  9. TCP/IP详解之:SNMP
  10. C#控件怎样获取,和失去焦点的处理
  11. 规则集之探究何时使用HashSet、LinkedHashSet以及TreeSet?
  12. C/C++语言简介之优缺点
  13. [csdn markdown]使用摘记三 简便快捷的流程图
  14. Python学习笔记 - dict和set
  15. 27 ArcMap加载天地图服务一片空白怎么办
  16. 关于 登录框的测试的一些case
  17. 005-IIS处理过程
  18. 微软Power BI 每月功能更新系列——8月Power BI 新功能学习
  19. mongodb与mysql区别(超详细)
  20. webapp 里主要的 mate 用途

热门文章

  1. java 使用 poi 解析excel
  2. 模式窗口刷新不弹出新窗口触发NET事件
  3. List<T> 添加 DataTable
  4. iOS,视图控制器相关(UIViewController)
  5. svg学习(一)
  6. 各大Oj平台介绍 刷题平台
  7. Filter过滤的2种方式
  8. PHP Socket 编程过程详解
  9. jade报错:unexpected token
  10. HDU 5690:2016"百度之星" - 初赛 All X