Linux中的软硬链接和动静态库

ops/2024/10/22 13:39:54/

硬链接

ln myfile.txt hard_file.link
264962 -rw-rw-r--  2 zhangsan zhangsan    0 Sep 30 03:16 hard_file.link
264962 -rw-rw-r--  2 zhangsan zhangsan    0 Sep 30 03:16 myfile.txt
273922 lrwxrwxrwx  1 zhangsan zhangsan   10 Sep 30 03:17 soft_file.link -> myfile.txt

 硬链接没有独立的iNode

建立硬链接,根本没有创建新文件,因为没有为硬链接分配独立的iNode,因为没有创建文件,所以,硬链接没有自己的属性集合和内容集合,使用的是他人的iNode。

建立硬链接的本质:在指定路径下,新增文件名和iNode编号的映射关系

 只有当一个文件的硬链接数变为0时,才算真正被删除

./..均为硬链接

软链接

ln -s myfile.txt soft_file.link
264962 -rw-rw-r--  1 zhangsan zhangsan    0 Sep 30 03:16 myfile.txt
273922 lrwxrwxrwx  1 zhangsan zhangsan   10 Sep 30 03:17 soft_file.link -> myfile.txt

软链接有独立的iNode,可以被当做独立的文件看待。

软链接保存的是目标文件的路径。

软链接类似于快捷方式。

acm 

Access 最后访问时间 不是实时更新的

Modify 文件内容最后修改时间

Change 属性最后修改时间

内容修改后属性大概率也会发生变化

静态库与动态库

静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库

链接时静态库的代码会被加载到程序中,故静态库必须用加载到内存

动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。

生成静态库
[root@localhost linux]# ar -rc libmymath.a add.o sub.o 
ar是gnu归档工具,rc表示(replace and create)

生成动态库 

shared: 表示生成共享库格式

fPIC:产生位置无关码(position independent code)

库名规则:libxxx.so

ldd mymath

查看链接方式

动态库的加载:采用与位置无关码进行编址,在动态库中形成的函数以偏移量的形式保存其地址,链接时将偏移量链接到可执行程序中,加载时一旦动态库加载完成,并且动态库的起始地址确定

那么函数在地址空间中的位置即可确定。

gcc

-I

gcc -o mymath main.c -I ./mylib/include

通过-I指定头文件的位置

-L

通过-L指定库所在路径

gcc -o mymath main.c -I ./mylib/include -L ./mylib/lib

-l

通过-l指定库名称

gcc -o mymath main.c -I ./mylib/include -L ./mylib/lib -l mymath

提取库名称是需要去掉其前缀和后缀。


http://www.ppmy.cn/ops/121165.html

相关文章

申请免费或试用VPS服务

申请免费或试用VPS服务 有时候我们特别希望能够找到一台像 Oracle Cloud 一样的永久免费 VPS(需要满足一定的条件),可相对于其它厂商申请相对比较难,可能需要多次申请才能得到。其实,除了 Oracle Cloud 之外&#xff0…

深度学习:(八)深层神经网络参数与流程

深层神经网络 符号规定 L L L :表示神经网络的层数; l l l :表示第几层; n [ l ] n^{[~l~]} n[ l ] :表示第 l l l 层的节点数; a [ l ] a^{[~l~]} a[ l ] :表示第 l l l 层中的激活函数&…

正态分布的极大似然估计一个示例,详细展开的方程求解步骤

此示例是 什么是极大似然估计 中的一个例子,本文的目的是给出更加详细的方程求解步骤,便于数学基础不好的同学理解。 目标 假设我们有一组样本数据 x 1 , x 2 , … , x n x_1, x_2, \dots, x_n x1​,x2​,…,xn​,它们来自一个正态分布 N…

项目:微服务即时通讯系统客户端(基于C++QT)]四,中间界面搭建和逻辑准备

四,中间界面搭建 前言:当项目越来越复杂的时候,或许画草图是非常好的选择 一,初始化中间窗口initMidWindow void mainWidget::initMidWindow() {//使用网格布局进行管理QGridLayout* layout new QGridLayout();//距离上方 20px 的距离&…

如何用深度神经网络预测潜在消费者

1. 模型架构 本项目采用的是DeepFM模型,其结构结合了FM(因子分解机)与深度神经网络(DNN),实现了低阶与高阶特征交互的有效建模。模型分为以下几层: 1.1 FM部分(因子分解机层&#…

Python Web 与量子计算

Python Web 与量子计算 目录 ⚛️ 量子计算的基础🐍 使用 Python 调用量子计算🌐 实现量子算法的 Web 接口🛠️ 实战案例:量子计算在金融领域的应用 1. ⚛️ 量子计算的基础 量子计算是利用量子力学原理进行信息处理的一种新兴…

【cache】浅析四种常用的缓存淘汰算法 FIFO/LRU/LFU/W-TinyLFU

本文浅析淘汰策略与工作中结合使用、选取,并非针对算法本身如何实现的 文章目录 FIFOLFULRUW-TinyLFU实践与优化监控与调整 FIFO first input first output , 先进先出,即最早存入的元素最先取出, 典型数据结构代表:…

初识Linux · 自主Shell编写

目录 前言: 1 命令行解释器部分 2 获取用户命令行参数 3 命令行参数进行分割 4 执行命令 5 判断命令是否为内建命令 前言: 本文介绍是自主Shell编写,对于shell,即外壳解释程序,我们目前接触到的命令行解释器&am…