Linux下的.so是基于Linux下的动态链接,其功能和作用类似与windows下.dll文件。

通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下,所以这些函数库被成为静态库(static libaray),通常文件名为“libxxx.a”的形式。

其实,我们也可以把对一些库函数的链接载入推迟到程序运行的时期(runtime)。这就是动态链接库(dynamic link library)技术,动态链接库文件名为“libxxxx.so”的形式。(so有可能是shared object的缩写)

动态链接库的特点与优势

首先让我们来看一下,把库函数推迟到程序运行时期载入的好处:

1. 可以实现进程之间的资源共享。

什么概念呢?就是说,某个程序的在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了。如果有,则让其共享那一个拷贝;只有没有才链接载入。这样的模式虽然会带来一些“动态链接”额外的开销,却大大的节省了系统的内存资源。C的标准库就是动态链接库,也就是说系统中所有运行的程序共享着同一个C标准库的代码段。

2. 将一些程序升级变得简单。用户只需要升级动态链接库,而无需重新编译链接其他原有的代码就可以完成整个程序的升级。Windows 就是一个很好的例子。

3. 甚至可以真正坐到链接载入完全由程序员在程序代码中控制。

程序员在编写程序的时候,可以明确的指明什么时候或者什么情况下,链接载入哪个动态链接库函数。你可以有一个相当大的软件,但每次运行的时候,由于不同的操作需求,只有一小部分程序被载入内存。所有的函数本着“有需求才调入”的原则,于是大大节省了系统资源。比如现在的软件通常都能打开若干种不同类型的文件,这些读写操作通常都用动态链接库来实现。在一次运行当中,一般只有一种类型的文件将会被打开。所以直到程序知道文件的类型以后再载入相应的读写函数,而不是一开始就将所有的读写函数都载入,然后才发觉在整个程序中根本没有用到它们。

Linux动态链接库隔离,Linux下的.so文件是动态链接库相关推荐

  1. linux 复制指定目录下的全部文件到另一个目录中,linux cp 文件夹

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. linux复制指定目录下的全部文件到另一个目录中 复制指定目录下的全部文件到另一个目录中 文件及目录 ...

  2. linux系统(ubuntu)下安装exe文件

    linux系统(ubuntu)下安装exe文件 昨天将家中的旧笔记本翻出来安装了ubuntu20.04.1,想在电脑中安装exe文件时,不能直接打开. 于是借鉴网络中的方法(https://blog. ...

  3. linux cp目录到指定目录,linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹...

    解压war包    jar -xvf   xxxx.war linux复制指定目录下的全部文件到另一个目录中 复制指定目录下的全部文件到另一个目录中 文件及目录的复制是经常要用到的.linux下进行复 ...

  4. Linux bash 命令行下实现可视化文件或文件夹浏览

    Linux bash 命令行下实现可视化文件或文件夹浏览 文章目录 前言 最终解决方案 代码 看起来像这样 使用方式 获取用户选择的文件/文件夹 我怎么知道用户选择的是文件还是文件夹 我可不可以在C等 ...

  5. linux在A目录下创建B文件,Linux课程---5、常用文件命令和目录命令(创建文件命令)...

    Linux课程---5.常用文件命令和目录命令(创建文件命令) 一.总结 一句话总结: touch file1 1.管道符|有什么用? 将前一个命令的结果作为后一个命令的输入:比如查看文件前3行:ca ...

  6. rapidxml在qt linux(gcc)下写xml文件出错

    在linux(gcc)下使用qt写入xml出错,代码如下: 错误如图:这里写图片描述 在网上找了好久没有找到答案,最后在http://stackoverflow.com/questions/14113 ...

  7. Linux C 遍历目录下的所有文件

    1.原文链接:https://www.cnblogs.com/fnlingnzb-learner/p/6472391.html Linux C 读取文件夹下所有文件(包括子文件夹)的文件名 #incl ...

  8. linux 备份文件时,目录下的个别文件不备份,【学习笔记】Linux TAR备份文件时排除指定文件...

    天萃荷净 Oracle研究中心学习笔记:分享一篇关于Oracle数据库备份的笔记,该笔记记录使用linux tar备份数据库目录时指定排除不备份指定文件. 在升级或者打PSU的时候都需要对ORACLE ...

  9. linux查询所有目录的txt文件,Linux 在指定目录下的所有文件中查找text文本的方法...

    1.使用grep -rnw查找指定文本grep -rnw '/path/to/somewhere/' -e 'pattern' -r或-R 递归遍历目录及子目录 -n 是行号 -w 代表匹配整个单词. ...

最新文章

  1. 股市币市:数据分析与交易所公告(20190225)
  2. Django中Mysql数据库的使用
  3. Windows phone应从Android吸取四点教训
  4. c 加密 java解密错误_google协议缓冲区-用C加密,用Java解密-InvalidProtocolBufferException...
  5. [Python人工智能] 三十二.Bert模型 (1)Keras-bert基本用法及预训练模型
  6. [dsu on tree]树上启发式合并总结(算法思想及模板附例题练习)
  7. VB100十月测试:360可牛凯歌高奏 金山失利瑞星缺席
  8. Linux入门学习(七)
  9. 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)
  10. tensorflow小案例
  11. 浅谈协方差矩阵 再谈协方差矩阵之主成分分析
  12. 数组操作 from《FORTRAN95 程序设计》
  13. 标准紧固件孔、螺栓孔、自攻螺钉孔、螺纹孔、铆钉孔、腰孔、标准排水孔工艺及规范性公布
  14. Poker Ⅱ 机械键盘使用说明书
  15. Typora使用数学公式
  16. 如何优雅地使用 Windows 10 ?
  17. After Effects CC 2019 中文版软件下载 /破解教程
  18. 国民岳父的“屁民理论”
  19. 中国计算机设计大赛蔡思琦,建策杯2018年江苏省大学生计算机设计大赛.PDF
  20. [QQ机器人]nonebot每日一言插件

热门文章

  1. CCF NOI1004 填充矩形
  2. 局域网 —— VLAN
  3. 称重问题 —— 哪个是假币?
  4. Tricks (四十一)—— 一 list 两用
  5. 面向对象——抽象基类
  6. linux关闭自动更新,Ubuntu开启系统自动升级与取消自动更新的方法,
  7. 2021湖南永州四中高考成绩查询,2021湖南高中排名一览表 最新排名
  8. c2061 dword 语法错误_解决'PMIB_ICMP_EX':undeclared identifier
  9. 编程语言python怎么读-0编程基础,什么语言也没学过,请问学Python怎样入门?...
  10. 免费python全套视频教学-有哪些优质的Python全系列视频教程推荐,免费的收费的都可以?...