【Linux】软硬链接和动静态库

本文介绍了在Linux环境下使用云服务器学习Linux时,涉及的软链接和硬链接的概念,以及动静态库的创建、打包、使用和加载原理,强调了静态库与动态库的优缺点和内存管理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要云服务器等云产品来学习Linux的同学可以移步/–>腾讯云<–/官网,轻量型云服务器低至112元/年,优惠多多。(联系我有折扣哦)

1. 软硬连接

1.1 软链接

在Windows系统中,我们可以给任意一个文件或者文件夹建立快捷方式

image-20240102141515061

这样很方便我们打开很深的文件夹内存放的文件,实际上在Linux中也有这种快捷方式的概念,只是在Linux中它叫做软链接

1. 软链接的创建方式

我们可以通过ln指令来创建链接,其中带上选项s表示创建软链接

ln -s FILE_NAME SOFTLINK_NAME

image-20240102190727517

image-20240102190841491

因为软链接有自己的inode编号,证明了软链接本质上是一个新文件

image-20240103182641851

实际上软链接里面存放的是源文件的路径,所以看起来软链接的大小比较小

2. 软链接的删除(解除链接)

方法一:软链接也是文件,所以能供直接使用rm指令删除软链接文件。

image-20240103182940309

方法二:使用unlink解除软链接

image-20240103183056867

我们可以把软链接理解为一个快捷方式,那么源文件被删除之后,我们的快捷方式显而易见也是用不了了的

image-20240103183219582

1.2 硬链接

在之前的文件系统的文章中,我们提到OS真正找到文件依靠的是inode,文件名只是在目录文件中的一堆和inode对应的映射。实际上在Linux中,可以让多个文件名映射同一个inode,这种方式被称为硬链接

1. 硬链接的创建方式

在创建软链接的时候,我们使用了-s选项,不使用-s就是创建硬链接

ln FILE_NAME SOFTLINK_NAME

image-20240103223856725

可以看到,这里两个文件名对应的inode是一样的,这个硬链接不是一个独立的文件。

当硬链接其中一个文件的大小、内容等发生变化,那硬链接的文件都会发生相应的变化,所以建立硬链接根本没有新增文件,因为没有给硬链接分配独立的inode,既然没有创建文件那么就没有自己的属性集合和内容集合,用的是别人的inode和内容。创建硬链接本质就是在指定的路径下,新增文件名和inode编号的映射关系!

由于硬链接的存在,我们知道inode可能会被多个文件名同时指向,所以实际上在inode结构体中有一个计数器,表示被指向的次数,也就是硬链接数

image-20240103230116429

这里的数字也就是这个引用计数。由于myfile.txt被hard.link硬链接了,所以对应的inode被两个文件名指向了

已经知道如果把源文件删掉,那么软链接将会失效,硬链接呢?

image-20240103230502566

所以可以得到结论:当一个文件的inode引用次数变为0 的时候才会被真正删除


image-20240103230658664

首先,目录本身就是一个文件,这个目录名和他的inode构成了一组映射关系,当我们进入到这个目录之后,在这个空目录里面默认会有一个.表示当前目录本身,这也是一组映射

image-20240103231006840

结论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凌云志.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值