Linux基础3-连接文件&库文件

本文介绍了Linux系统中的连接文件,包括软链接和硬链接的特性与区别。软链接类似Windows快捷方式,inode节点不同,当源文件改变或移除,软链接会失效。硬链接则共享同一inode,文件内容不变。此外,还详细讲解了Linux的库文件,如静态库(.a)和动态库(.so),以及它们在程序中的作用和优缺点。

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

连接文件&库文件

连接文件

软链接:

符号链接 相当于 windows上的快捷方式

软连接和源文件不是一个文件 —> inode结点不同
通过连接文件也能访问(读、写)源文件的内容

ln -s 源文件 链接文件
ls -i 查看文件结点

  • ls -i 显示当前目录下所有文件的inode结点号
    ln -s 源文件 链接文件
    如果源文件一旦移除或者被修改存储路径或名称,则软连接文件失效

原因:
Linux的文件系统–>ext4 索引式文件系统
Windows的文件系统–>NTFS
U盘的文件系统–>FAT32 链接式文件系统

ext4 格式化时,会将磁盘划分为三个区域
1.superblock:
文件系统的整体信息 inode和block的总量 使用量 剩余量
2.inode区域:
文件的属性信息(文件类型 文件属主 组用户 大小…)以及文件内容所在的block
3.block区域:
文件的内容 一个大文件可以占据多个block
文件内容存储在block中,但是每一个block必须留有空间存储下一个block的位置.

硬链接:

相当于源文件的别名
软连接和源文件是一个文件 —> inode结点相同

ln 源文件 链接文件
ls -l 查看链接数,引用计数

(链接数指明了这个文件有几个别名 当链接数变为0 我们才能将这个文件的内容删除掉)

库文件:
提前写好的某些功能代码的集合 库中都没有main函数
例如:
Windows: 静态 .lib 动态.dll
Linux: 静态 .a 动态 .so

静态库
中间文件(.o)的集合
1. 将.c编译成.o文件–>没有main函数
2. 将.o文件打包成静态库

ar crv libxxxxx.a .o

静态库在链接阶段中会将程序中用到的功能代码合并到最终的可执行文件中,可执行文件执行时,并不依赖静态库.

优点: 效率高 (和动态库对比)
缺点: 占用磁盘(比如有十个程序都要用到这个静态库 就要加载十次)

动态库(共享库):不可执行的可执行文件(只是某些功能代码的集合)
不可执行的原因:没有main函数
在这里插入图片描述

gcc -shared -fPIC -o libxxxxx.so .c

共享库在程序执行时,由操作系统单独加载动态库(所以操作系统必须能够找到动态库存储的位置—必须依靠环境变量)
动态库存储的

  • 默认路径: /lib 或 /usr/lib(首先考虑:把动态库拷贝到这两个里面)
  • 环境变量:LD_LIBRARY_PATH export LD_LIBRARY_PATH=路径 仅对当前终端有效(或者考虑:把环境变量的路径一改)
  • 特定用户的终端配置文件 /home/user/.bashrc 在这个文件下改环境变量,就可以在所有终端使用(在这个文件里把export LD_LIBRARY_PATH=path加进去)
  • 系统的终端配置文件 /etc/bashrc

gcc -o main main.o -L库路径 -l库名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值