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

硬链接

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.xdnf.cn/news/1552240.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Python报错已解决】error: subprocess-exited-with-error

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

Docker容器、数据卷和数据挂载

目录 修改容器文件内容 步骤一 步骤二 步骤三 效果 总结 Docker数据卷 容器与数据耦合的问题 数据卷 创建数据卷 创建数据卷 查看所有数据 查看数据卷详细信息卷 总结 Docker数据挂载 举例 案例 总结 创建并运行一个MySQL容器,将宿主机目录直接挂…

欧几里得8月模考总结

绝对值可导问题 函数翻折后不存在尖点

低空经济时代来临,挑战和机遇详细分析

低空经济作为一种新兴的经济形态,正逐步成为推动国民经济发展的新增长点。它依托于低空空域,涵盖通用航空、无人机应用、航空运动、低空旅游等多个领域,展现了广阔的发展前景和巨大的发展潜力。本文旨在详细分析低空经济时代来临所带来的挑战…

Go AI 编程助手的使用 Fitten Code

Go AI 编程助手 Fitten Code 1、安装2、智能补全3、AI 问答4、生成代码5、代码转换6.生成注释7、解释代码8、生成测试9、检查 BUG11、优化代码12、对项目整项目分析 Go AI 编程助手的核心优势在于其能够显著提高编程效率,减少错误,并提供灵活的选择。‌ …

20241001国庆学习

n60f/p 这个n是指旋转磁场的速度。 极数表示旋转转子的永磁体极数,具有一对N极/S极的电机称为双极电机。 极数可以是2、4、6、8等。 (从电机控制的角度来看,当极数增加一倍时,转速将减半,当极数增加四倍时…

Java在用增强for循环遍历集合时删除元素,抛出java.util.ConcurrentModificationException异常

文章目录 0. 前言1. 问题产生的背景2. Java中增强for循环的底层原理3. 为什么增强for循环不支持在遍历集合时删除元素3.1 问题排查3.2 modCount 变量的来源3.3 expectedModCount 变量的来源3.4 导致modCount变量和expectedModCount不相等的原因3.5 为什么用迭代器遍历元素时删除…

PyTorch数据处理:torch.utils.data模块的7个核心函数详解

本文将深入介绍PyTorch中torch.utils.data模块的7个核心函数,这些工具可以帮助你更好地管理和操作数据。 1、Dataset类 Dataset类是PyTorch数据处理的基础。通过继承这个类可以创建自定义的数据集,适应各种类型的数据,如图像、文本或时间序列数据。 要创建自定义数…

shell脚本多行注释

1.冒号<<结束字符 :<<COMMENT echo -e&#xff1a;使用 -e 参数使 echo 支持转义字符。 \n&#xff1a;表示换行。 # Source definitions&#xff1a;添加注释。 . /etc/profile&#xff1a;加载 /etc/profile 文件。 >> 将上述内容追加到 /root/.bashrc 文…

剪刀面的做法

1 面和水称重准备好&#xff0c;鸡蛋敲孔流入面粉中两个蛋清。 2 边下水边和面&#xff0c;每次下水不要太多&#xff0c;这是和硬面要注意的&#xff0c;下水多&#xff0c;水用完了&#xff0c;面还没和起来&#xff0c;一边揉面一边搓面盆周围&#xff0c;这样可以使盆光&a…

05-函数传值VS传引用

函数传值 一、没法改变值的方式&#xff1a; 一个变量拷贝到另一个变量, 这种形式的函数调用被称为: 传值调用 局部变量的生命周期在函数的运行期间会一直存在. void Increment(int a)//假设一个 x(只是为了验证实参会被映射到形参这件事情),a的值会被拷贝到x {a a 1; //1…

复写零——双指针算法

题目链接 复写零https://leetcode.cn/problems/duplicate-zeros/description/ 题目要求 样例 题目分析 先看示例1&#xff0c;题目要求将数组中所有的0&#xff0c;均复写一遍&#xff0c;且要在原数组上进行更改&#xff0c;多余的元素消失 但我们发现&#xff0c;如果双指针…

pnpm install的时候失败提示python问题

忘记是哪个依赖了&#xff0c;npm正常&#xff0c;pnpm的时候就异常&#xff0c;但是报错里python异常 解决方法&#xff1a;安装python就行 ennn免安装的python好麻烦 网上找教程安装python好麻烦&#xff0c;发现微软可以直接安装&#xff0c;就用微软的安装了 查看结果 p…

超强大的 Nginx 可视化管理工具

今天给大家介绍一款 Nginx 可视化管理界面&#xff0c;非常好用&#xff0c;小白也能立马上手。 nginx-proxy-manager 是一个反向代理管理系统&#xff0c;它基于 NGINX&#xff0c;具有漂亮干净的 Web UI。还可以获得受信任的 SSL 证书&#xff0c;并通过单独的配置、自定义和…

【Python报错已解决】TypeError: an integer is required (got type bytes)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

Linux操作常用问题

目录 Ubuntu操作问题vi编辑方向键键盘乱码回退键不能使用的问题解决问题的方法 Ubuntu操作问题 vi编辑方向键键盘乱码回退键不能使用的问题 编辑/etc/systemd/resolved.conf文件来修改DNS&#xff0c;结果编辑时键盘乱码&#xff0c;按下方向键会出现ABCD&#xff0c;且回退键…

Linux shell编程学习笔记84:tee命令——显示保存两不误

0 引言 在前面的学习笔记中&#xff0c;我们经常使用echo命令和输出重定向来生成脚本文件或演示文件&#xff0c;其实Linux提供了一个可以从标准输入读取数据&#xff0c;并输出成文件的命令——tee。 1 tee命令 的帮助信息、功能、命令格式、选项和参数说明 1.1 tee命令 的…

每日一题|983. 最低票价|动态规划、记忆化递归

本题求解最小值&#xff0c;思路是动态规划&#xff0c;但是遇到的问题是&#xff1a;动态规划更新的顺序和步长&#xff0c;以及可能存在的递归溢出问题。 1、确定dp数组含义 dp[i]表示第i天到最后一天&#xff08;可能不在需要出行的天数里&#xff09;&#xff0c;需要花费…

HTML的修饰(CSS) -- 第三课

文章目录 前言一、CSS是什么&#xff1f;二、使用方式1. 基本语法2. 引入方式1.行内式2.内嵌式3. 链入式 3. 选择器1. 标签选择器2.类选择器3. id选择器4. 通配符选择器 4. css属性1. 文本样式属性2. 文本外观属性 5. 元素类型及其转换1. 元素的类型2. 元素的转换 6.css高级特性…

基于SpringBoot+Vue的驾校官网

一、项目介绍 > 这是一个基于SpringBootVueElementPlus开发的驾校官网。 > 包括用户登录注册、在线学习、模拟考试、预约学车、在线咨询等功能。 > 该项目适用于JAVA初学者的学习项目或毕业课程设计。 二、基础依赖 技术/框架版本描述Java8编程语言Maven3.6依赖…