【Linux文件篇】软硬链接与动静态库链接的实用指南

W...Y的主页 😊

代码仓库分享💕


目录

文件的软硬链接

 动静态库

回归动静态库

创建动静态库

生成静态库

生成动态库

库搜索路径


文件的软硬链接

上篇文章中我们讲述了文件系统从硬件到软件,理解了如何创建一个文件的具体流程,今天我们先来看一下文件的软硬链接。

我们看如何创建一个硬链接:

 指令: ln 目标文件 硬链接文件名
硬链接创建的不是一个文件,其inode和目标文件的inode的是相同的,而且我们可以看出在没有创建硬链接时我们的test.txt权限和拥有者中间有一个数字从1变成了2这是什么呢?这个数字表示硬链接数。当有硬链接指向文件时,这个数字就会+1,当我们删除时这个数字就会-1,就好比C++中的引用一样。

当我们给test.txt中写入内容时,无论是test.txt还是link.hard都会指向相同的内存空间,显示相同的内容。当我们将test.txt删除后查看link.hard内容时我们照样可以查看。说明这个内存空间还没有被释放,知道硬链接数为0时才会将其释放。只有引用计数减到0才会将它的block bitmap 、inode bitmap对应的比特位清空。

当我们创建一个目录时,其默认的硬链接数就是2,那是因为进入目录后隐藏文件中有一个.的inode与当前目录i弄得相同,这就是为什么硬链接数为2的原因。

如果我们在dir目录中继续创建一个目录,那么dir的硬链接数就会成为3,因为再创建的目录中的上级目录..的inode也是这样。所以一个目录下有多少个子目录:硬链接数 -2得到的。 

如何给一个文件创建一个软链接:

 指令:ln -s + 目标文件  软连接文件名

我们可以看到软链接本质是一个文件,其有一个独立的inode。而软链接文件中存放的内容就是目标文件的路径。这就好比Windows中的快捷方式一样。

所以软链接的应用场景一般是创建快捷方式,如果一个可执行程序在目录中嵌套太深,我们每次想指向其程序要么就要进入到可执行程序的当前目录下,要么就要将可执行程序与当前用户所在的路径下的相对目录进行输入非常繁琐,所以我们可以使用软链接的方式进行简化。

Linux不允许给目录建立硬链接,因为寻找文件是通过路径寻找的,如果我们给根目录创建硬链接就会导致环路问题出现死循环递归。除非系统自己给目录建立硬链接!!

 动静态库

回归动静态库

动静态库是编程中两种常用的库文件类型,它们在程序的编译和链接过程中起到不同的作用:

  1. 静态库(Static Library)

    • 静态库文件通常具有.lib.a的文件扩展名(取决于操作系统)。
    • 它们在编译时被链接到最终的可执行文件中。这意味着静态库中包含的代码和资源在编译阶段被复制到最终的程序中。
    • 优点包括减少运行时依赖、可能提高程序的加载速度,以及在某些情况下提高程序的执行效率。
    • <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W…Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值