【linux】硬链接和软链接

简介: 【linux】硬链接和软链接

1.软硬链接

发现特征:

1.软链接是一个独立的文件,因为有独立的inode number

2.硬链接不是一个独立的文件,因为没有独立的 inode number ,用的是目标文件的inode

3.属性中有一系列硬链接数

文件磁盘级引用计数:有多少个文件名字字符串通过inode number 指向我

软硬链接是什么?

1.软链接:目标文件对应的路径字符串(对标windows上的快捷方式)

2.硬链接:一个文件名和inode的映射关系,建立硬链接,就是在指定目录下,添加一个新的文件名和 inode的映射关系

我们通过inode号在磁盘上找到我们对应的文件数据,如果删除一个文件,对应的硬链接数-1 ,但是还有一个文件和inode建立了映射关系,磁盘分组中inode有具体范围,找到对应的inode,对应inode的inode的inode bitmap置1,说明对应inode 号被占用,inode对应inode table里面保存对应inode的文件属性,文件的数据放在data blocks数据块中,而文件属性中有数据块的地址,一个数据块有4kb大小,就可以找到文件内容.删除文件,将对应 inode的inodemap位置置0即可.

定位一个文件,只需要两种方式:

通过路径(软链接)-》找到目标文件的inode号(硬链接)-》

软链接和硬链接的作用:

软链接:可以快速找到一个忘记路径的文件

硬链接:1.构建linux的路径结构,让我们可以使用 . … 来路径定位

2.用硬链接来做文件备份

2.静态库

我们使用过c/c++的标准库,里面有函数的底层实现,当我们在gcc/g++指令编译链接时,会帮我们加载库

linux下 windows下
.so(动态库) .dll(动态库)
.a(静态库) .lib(静态库)

如何做静态库

而库里就是对应方法的实现,

我们不需要将myadd.c传给你同学,只需要将汇编形成的myadd.o文件是对应方法的二进制文件,就是对应的库文件,(或者说是.o文件的打包)

如何使用静态库?

用别人的库,别人给你提供头文件和库文件即可

1.方1

而myadd.h文件就相当一个手册,告诉你的同学怎么使用库函数

我们就实现一个最简单的加法函数,现在你的同学想要你这个库,应该怎么办呢??

使用classmates来比作你同学,我们将myadd.o和myadd.h拷贝过去

你同学只管调用就行

r如果有多个.o文件,对应好多库函数的实现,我们可以通过ar -rc mylibc.a myadd.o 形成打包文件,这里的打包文件就是对应的库

现在给你舍友发送mylibc.a和myadd.h即可

2.方2

我们如何像使用c标准库那样使用我们的库,很简单,我们直接将myadd.h拷贝的/usr/include/ 把libmyc.a拷贝到/usr/lib64/

分别是c语言使用的头文件,以及c标准库

切换root用户拷贝过去

此时我们也成正规军了

删除同学使用的libmyc.a和myadd.h

此时我们myadd.h在/usr/include/下我们要使用<>括号

问题:

gcc/g++默认是认识c/c++标准库的,而我们自己的gcc不认识

解决+ -l选项 带自己的静态库名

gcc在识别的时候必须要去掉库的前缀和后缀,我们特意将静态库的命名变成标准形式,前缀lib,后缀.a

注意:选项放在后面

但是不建议这样做,会污染标准库

从标准库删除

3.方3

在gcc编译链接时在指定目录下找.h和.a

我们直接将目录mylib拷贝给classmates

gcc matesmain.c  -I ./mylib/include/ -L ./mylib/lib/ -lmyc 


目录
相关文章
|
1月前
|
Linux Windows
Linux 软链接与硬链接
创建软链接 软链接是一个指向另一个文件或目录的引用,类似于Windows系统中的快捷方式。 ln -s [目标文件路径] [链接文件名] 例如,要在当前目录下创建一个名为link_file的软链接,指向/home/user/desktop/link,可以执行以下命令 ln -s /home/user/desktop/link link_file 这将创建一个软链接link_file,它实际上是指向/home/user/desktop/link的引用。
42 1
|
8月前
|
Linux 测试技术 索引
软件测试|Linux基础教程:ln命令与软链接和硬链接
软件测试|Linux基础教程:ln命令与软链接和硬链接
73 0
|
12天前
|
Linux 数据处理 数据安全/隐私保护
探索Linux命令lchfn:更改文件或目录的硬链接数
在Linux中,`ln`命令用于创建硬链接,而非`lchfn`。硬链接指向文件的inode,多条目共享相同数据。了解硬链接有助于理解文件系统行为。使用`ln 源文件 目标链接名`创建硬链接,`ls -li`查看硬链接数。直接修改硬链接数风险高,应谨慎操作,区别硬链接和软链接,确保数据安全,并常查阅`man ln`。
|
7天前
|
Linux C语言 Windows
Linux技术分享:Linux设置软链接
Linux技术分享:Linux设置软链接
16 2
|
10天前
|
监控 安全 Linux
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
|
1月前
|
Linux 编译器 Windows
Linux软链接使用技巧
Linux软链接使用技巧
19 1
|
1月前
|
存储 Linux 索引
linux系统软链接与硬链接一文通
通过本文可以迅速掌握linux下软链接与硬链接的相关知识
22 0
|
1月前
|
Linux 应用服务中间件
Linux命令——ln命令创建和删除软、硬链接
Linux命令——ln命令创建和删除软、硬链接
64 0
|
1月前
|
存储 算法 Linux
Linux中的硬链接与软链接:原理、应用与最佳实践
Linux中的硬链接与软链接:原理、应用与最佳实践
155 0
|
1月前
|
固态存储 Linux 索引
【Linux】什么是硬链接和软链接?
【1月更文挑战第12天】【Linux】什么是硬链接和软链接?