Bootstrap

Linux【动静态库】

目录

1.软硬链接

1.1软硬链接的语法 

1.2理解软硬链接

1.3目录文件的硬链接

1.4应用场景

1.5ACM时间

2.动静态库 

2.1认识库

3.制作静态库 

3.1静态库打包

3.2静态库的使用

4.制作动态库 

 4.1动态库打包

4.2动态库的链接使用 

 4.3动态库的链接原理

 总结:



前言:

在学习动静态库知识之前,我们先理解一下软硬链接的知识,本章节我们需要使用上一章节的inode知识,配合软硬链接制作动静态库。

1.软硬链接

1.1软硬链接的语法 

 语法:ln 【选项】【源文件】【新建链接】

 对文件进行软硬链接非常简单,只需要通过 ln -s 或 ln 对文件进行链接即可,生成的链接文件类型为 l(普通文件为 -,目录文件为 d

 对目录下的test2.txt进行软连接

 对目录下的file.txt进行硬链接

解除链接语法

unlink 【链接】

注意:

目录可以进行软连接但是无法进行硬链接,需要结合链接原理配合inode知识进行讲解,会在下面进行介绍。 

1.2理解软硬链接

inode和文件是一一对应的关系,但是从下图我们清晰的看到硬链接之后,两个文件的inode都是1706050 ,软连接之后,产生两个inode ;可以肯定的知道硬链接之后,没有创建新的文件,软连接是创建新的文件了。

软连接之后新的文件就会有新的属性和内容,内容里放的就是指向文件的路径。

硬链接则是在特定目录的数据块中新增,文件名和指向文件的inode的映射关系

 所以我们看到硬链接的连接数(引用计数为2)当我们删除硬链接或者文件的的时候,引用计数会减减,当引用计数为零的时候文件才会被删除。

文件系统中我们也知道,文件的部分属性在struct file中,但是大部分属性都在inode结构中包括引用计数

1.3目录文件的硬链接

不是说,文件不允许硬链接吗,为什么打开的目录我们能看到硬链接数为2?

这是因为新建目录之后,该目录下有两个隐藏文件 一个是.一个是..一个指向该目录一个指向上级目录,.这个文件就建立了和目录文件inode的映射关系。所以我们就看到硬链接数为2 

但是明明说好的目录是不可硬链接的,我们也测试了确实无法对目录文件做硬链接,显示not allowed,这个不冲突吗?需要解释一下,这个目录文件硬链接,是系统内部出厂就设置好的,是不允许用户手动建立的,为了避免用户误操作而导致目录环装问题;但是为了方便用户进行路径快速查找,对目标文件进行定位,内置了硬链接。

1.4应用场景

软链接可以当作快捷方式使用,比如快速运行一个藏的很深的可执行程序

而硬链接一是可以用来当作目录移动的工具,二是可以用来给重要的源文件起别名并使用,一旦发生删除等不可逆行为时,可以确保源文件的安全

1.5ACM时间

每一个文件都有三个时间:访问 Access、修改属性 Change、修改内容 Modify,简称为 ACM 时间

可以通过 stat 查看指定文件的 ACM 时间信息

;