Linux软硬链接及动静态库

 软硬链接与动静态库

软连接

创建链接的方法:

  • ln  -s  test1.txt  test2.txt

 其中ln  是link(链接),-s   是soft(软),后者链接前者。

 

此时打开test2.txt,发现其中内容与test.txt一致。那么软连接到底建立了什么联系?

  •  首先两个文件都有独立的inode号,也就是说他们是两个独立文件
  • 其次,如果删除了目标文件(此处为test.txt),软链接文件则无法使用。反过来只删除软连接文件的话,不会对目标文件产生影响。

所以软连接可以看作是创建一个快捷方式。

硬链接

创建链接的方法:

  • ln  test1.txt  test2.txt

 其中ln  是link(链接),后者链接前者。

  •  两个文件共用一个inode,并非独立文件
  • 2是文件(inode)的属性,对应的是文件的引用计数

 此时使用  ll -li  指令查看文件:

  •  软连接是通过路径去查找的(先找路径,再使用inode),这也就是为什么删除目标文件就无法使用的原因
  • 硬链接是直接通过inode去查找的,建立链接后引用计数加一,只要引用结束不为0则不会真正删除文件。

因为其查找的特点 ,软连接常用于创建快捷方式,硬链接常用于备份。

动静态库

编程时很多常用的功能都是提前编好并封装成库,而库则是程序代码的集合,是共享程序代码的一种方式。

  • 静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。相当于程序自带静态库。
  • 动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。
  • 链接了动态库的可执行程序的函数地址表中只包含会用到的函数的地址。
  • 动态库可以在多个程序间共享,所以动态链接使得可执行文件更小。

静态库创建:

  • ar   -rc   libmyc.a   *.o 

把所有.o文件打包,形成一个文件libmyc.a的静态库。

动态库创建:

-shared 意为共享

  • gcc   -shared   -o   libmyc.so   *.o

 动静态库优缺点

静态库优点:

  1. 静态库打包到应用程序当中,加载快
  2. 方便移植

静态库缺点:

  1.  其相同的库文件数据可能在内存中被加载多份,比动态库更消耗内存
  2. 库文件更新需要重新编译项目文件,生成新的可执行程序,更加耗时

 动态库优点:

  1. 可实现不同进程间的资源共享
  2. 动态库升级简单,只需要替换库文件,无需重新编译应用程序
  3. 可以控制何时加载动态库,不调用库函数动态库不会被加载 

动态库缺点: 

  1. 加载速度比静态库满
  2. 发布程序需要提供依赖的动态库

动态库加载

动态库在程序运行时被加载到物理内存中,与程序进程产生关联。动态库加载后,会被映射到进程的地址空间中,先在页表中填写虚拟地址和物理地址的映射关系,然后映射到进程地址空间的共享区中。

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

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

相关文章

轻松购物,尽在购物网

在忙碌的生活中,想要找到心仪的商品,却总是苦于没有时间和精力去实体店挑选?别担心,购物网为您提供一站式的购物体验。无论是时尚服饰、家居用品,还是美食特产,这里都能满足您的需求。只需轻轻一点&#xf…

C/C++运行时库和UCRT系统通用运行时库总结及问题实例分享

目录 1、概述 2、不同版本的Visual Studio对应的运行时库说明 3、在Windbg10.0安装目录中获取UCRT通用运行时库 4、微软官网对UCRT通用运行时库的相关说明 5、使用Visual Studio 2017开发软件初期遇到的UCRT通用运行时库问题 6、如何查看软件依赖了哪些C/C运行时库&#…

leetcode-盛水最多的容器-109

题目要求 思路 1.正常用双循环外循环i从0开始,内循环从height.size()-1开始去计算每一个值是可以的,但是因为数据量太大,会超时。 2.考虑到超时,需要优化一些,比如第一个选下标1,第二个选下标3和第一个选下…

心识宇宙 x TapData:如何加速落地实时数仓,助力 AI 企业智慧决策

使用 TapData,化繁为简,摆脱手动搭建、维护数据管道的诸多烦扰,轻量代替 OGG、DSG 等同步工具,「CDC 流处理 数据集成」组合拳,加速仓内数据流转,帮助企业将真正具有业务价值的数据作用到实处&#xff0c…

基于springboot实现华府便利店信息管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现华府便利店信息管理系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本华府便利店信息管理系统就是在这样的大环境下诞生&#xff…

电影《朝云暮雨》观后感

上周看了电影《朝云暮雨》,看完之后,感觉自己整个人都不太好了,也不是说电影太差,只是觉得电影没有传达正能量,让人很不舒服。 (1)演技在线 对于著名的演员“范伟”,或者说&#x…

Payload SDK dji

开发硬件 感谢您的耐心等待,建议您可以考虑下树莓派4B或Jetson Nano开发板,看您需求选择,OSDK即将停止服务,我们建议您使用PSDK来进行开发,PSDK包含了OSDK的功能。Payload SDK 感谢您对大疆产品的支持!祝…

【耕地保卫战:揭秘“占补平衡”】守护粮仓的智慧策略

嗨,各位小伙伴们,今天咱们来聊聊一个与我们每日餐桌紧密相关的主题——耕地占补平衡。在现代化的车轮滚滚向前时,如何在发展与保护之间找到那个微妙的平衡点,确保我们的“米袋子”满满当当呢?这就不得不提到耕地占补平…

论文阅读--Language-driven Semantic Segmentation

效果很好,文本增加一个词,就能找到对应的分割地方,给出的无用标签也不会去错误分割,而且能理解文本意思,例如dog和pet都能把狗给分割出来 image encoder使用DPT分割模型,大致架构为ViTdecoder,d…

【个人经历分享】末流本科地信,毕业转码经验

本人24届末流本科,地理信息科学专业。 我们这个专业可以说是 “高不成,低不就”的专业,什么都学但都不精。考研我实在是卷不动同学历的人,我在大三的时候就开始考虑转码。 至于我为什么选择转码,选择了GIS开发&#xf…

element ui 下拉框Select 选择器 上下箭头旋转方向样式错乱——>优化方案

目录 前言1、问题复现2、预期效果3、input框样式修改解析4、修改方案 🚀写在最后 前言 测试A:那啥!抠图仔,样式怎么点着点着就出问题了。 前端:啥?css样式错乱了?你是不是有缓存啊&#xff01…

linux命令arp的使用

arp arp 命令用于显示和修改 IP 到 MAC 转换表 补充说明 arp 命令 是 Address Resolution Protocol,地址解析协议,是通过解析网络层地址来找寻数据链路层地址的一个网络协议包中极其重要的网络传输协议。而该命令可以显示和修改 arp 协议解析表中的缓…

Mia for Gmail for Mac:Mac用户的邮件管理首选

对于追求高效工作的Mac用户来说,Mia for Gmail for Mac无疑是邮件管理的首选工具。它以其卓越的性能和丰富的功能,为用户带来了前所未有的高效邮件管理体验。 Mia for Gmail for Mac不仅支持多帐号登录和标签选择功能,还提供了邮件分类、垃圾…

linux 中 fd 申请和释放管理(两级 bitmap)

linux 中 fd 的几点理解_linux fd-CSDN博客 通过上边的文章,我们可以知道,在 linux 中,fd 有以下几点需要了解: (1)fd 表示进程打开的文件,是进程级别的资源,不是系统级别的资源 …

基于manifest文件批量将coding的仓库导入gitlab中

文章目录 写在前面的话背景编写manifest文件最终效果 写在前面的话 前面有讲过通过manifest清单导入项目到gitlab中,但是实际的操作是不同gitlab实例之间的操作,然而对于在不同gitlab实例的repo迁移而言,显然direct transfer会更合适。 背景…

民国漫画杂志《时代漫画》第21期.PDF

时代漫画21.PDF: https://url03.ctfile.com/f/1779803-1248634754-017e2b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

结构型模式之桥接模式

文章目录 概述原理结构图代码示例 小结 概述 桥接模式(bridge pattern) 的定义是:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联来取代传统的多层继承,将类之间的静态继承关系转…

基于深度学习OCR文本识别系统源码(带界面)

第一步:概要 基于深度学习OCR文本识别分为两个模块:DBNet和CRNN。 DBNet是基于分割的文本检测算法,算法将可微分二值化模块(Differentiable Binarization)引入了分割模型,使得模型能够通过自适应的阈值图进行二值化,并…

Postgresql 基础学习

一、介绍 PostgreSQL是一个开源的关系型数据库管理系统(RDBMS),它支持SQL语言的所有功能,具有可扩展性、高并发性和可靠性等特点。 以下是一些 PostgreSQL 的特点: 开源:PostgreSQL是一个非常受欢迎的开源…

Python-温故知新

1快速打开.ipynb文件 安装好anaconda后,在需要打开notebook的文件夹中, shift键右键——打开powershell窗口——输入jupyter notebook 即可在该文件夹中打开notebook的页面: 2 快速查看函数用法 光标放在函数上——shift键tab 3...