动静态库

inode

inode用于管理文件属性和内容

一个文件只能有一个inode,一个inode可以对应多个文件名

Linux进程中,打开的每一个文件都有对应的文件inode属性和文件页缓冲区(内存和磁盘的缓冲区)

软硬链接

硬链接

多个文件指向同一个inode时,inode就有多个计数,这几个文件实质上是同一个文件

删除时inode计数不为0,这个inode管理的文件内容就不会释放

软链接

链接指定文件时,产生独立的inode

删除源文件,软链接失效

为什么软链接可以跨文件系统链接,但是硬链接不可以?

因为软链接是独立的inode,里面存有源文件的路径

动静态库

静态库

一般只在如下情况使用静态库

1、static修饰

2、只提供静态库

为什么 -I 引用头文件时不需要绝对路径,但是在链接 -L 却需要绝对路径?

这两者都是需要绝对路径的,预处理阶段头文件展开,是需要在系统路径下找的

引用头文件只是告诉编译器去哪条路径下找,绝对路径写在了main.c中

库名称是libmymath.a 为什么链接时却是mymath?

链接库时去掉前缀和后缀

动态库

为什么动态库找不到?

链接时告诉了编译器动态库在哪里,但系统不知道(加载器),所以在加载时找不到动态库

为什么静态库能找到?

静态库是直接拷贝到可执行程序

找不到静态库解决方法

Linux进程可以共享动态库 --共享库

所以动态库可以节省内存和磁盘空间

动态库是怎么被加载的?

进程地址空间中的共享区内容通过页表映射在物理内存中,通过映射,之后执行的代码都会在进程地址空间中执行

系统在运行多个库时,会对多个库进行管理(先描述,在组织)

地址问题

程序没加载前

在函数入口处的地址是虚拟地址

程序加载后

CPU运行函数入口(虚拟地址)后,通过进程页表映射到物理内存,CPU看到的是虚拟地址,他不需要直接关心物理地址

共享库大了,具体映射在哪里?

动态库是不可能加载到固定的地址空间位置

库可以在虚拟内存任意位置加载,让自己内部函数不采用绝对编址,只表示在库中的偏移量就可以

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/446624.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Gradle模块化最佳实践

一,模块化的原因及意义 模块化是一种将大型的软件系统拆分成相互独立的模块的方法。具有以下优势: 代码复用:不同的模块可以共享相同的代码。这样可以避免重复编写相同的代码,提高开发效率。模块独立性:每个模块都可…

【安装教程】windows下安装Faiss-GPU

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 【安装教程】windows下安装Faiss-GPU 查看安装指令 查看安装指令 登录网站:https://anaconda.org/ , 然后搜索faiss-gpu会进入如下界面,或…

Vue 3中的reactive:响应式状态的全面管理

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

讲解Python3内置模块之json编码解码方法

简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成&#…

web前端框架

目前比较火热的几门框架: React React是由Facebook(脸书)开发和创建的开源框架。React 用于开发丰富的用户界面,特别是当您需要构建单页应用程序时。它是最强大的前端框架。 弊端: 您不具备 JavaScript 的实践知识,则建议不要使用 React。同样&#x…

MIT6.828LAB4 (3)

LAB3_Part B: Copy-on-Write Fork 文章目录 LAB3_Part B: Copy-on-Write Fork前言练习8练习9练习10练习11练习12总结 前言 记录一下自己的学习过程 实验内容翻译: https://gitee.com/cherrydance/mit6.828 该翻译仅供参考 练习8 实现sys_env_set_pgfault_upcall系统…

内存映射mmap拓展

第一个是上一篇博客中用mmap实现任意两个进程间相互通信,前几篇博客也用管道实现了进程间通信 这里有个问题,管道是基于缓冲区环形队列的,实验也表明读过的数据不能在读利用命名管道实现任意进程间的通信 那么mmap多个读写操作时会是什么情况…

关于GPU显卡的介绍

一.关于英伟达历代产品架构 显卡是一种计算机硬件设备,也被称为显示适配器或图形处理器。目前的硬件部分主要由主板、芯片、存储器、散热器(散热片、风扇)等部分。显卡的主要芯片是显卡的主要处理单元。显卡上也有和计算机存储器相似的存储器&#xff0…

Mysql数据库-基本表操作

1.表操作 创建表:CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; field 表示列名 datatype 表示列的类型 character set 字符集,如果没有指定字符集&#xff…

python学习笔记------集合(set)

集合定义格式 基本语法: #定义集合字面量 {元素,元素,元素......,元素} #定义集合变量 变量名称{元素,元素,元素......,元素} #定义空集合 变量名称set() #定义集合字面量 {元素&#…

【AI辅助研发】-趋势:大势已来,行业变革

【AI辅助研发】-趋势:大势已来,行业变革 引言 在科技日新月异的今天,人工智能(AI)技术已逐渐渗透到各行各业,其中软件研发行业更是受益匪浅。AI辅助研发已成为大势所趋,不仅提高了软件开发的效…

登录凭证------

为什么需要登录凭证? web开发中,我们使用的协议http是无状态协议,http每次请求都是一个单独的请求,和之前的请求没有关系,服务器就不知道上一步你做了什么操作,我们需要一个办法证明我没登录过 制作登录凭…

免费无水印视频素材哪里下载?这几个地方您要知道

哟哟,切克闹,视频剪辑达人们,是不是在视频素材的海洋里迷航了?别着急,今天我就给大家分享几个超实用的无水印短视频素材合集网,让你的创作更加得心应手,从此素材不再是你的烦恼 1,蛙…

鸿蒙原生应用元服务开发-WebGL网页图形库开发概述

WebGL的全称为Web Graphic Library(网页图形库),主要用于交互式渲染2D图形和3D图形。目前HarmonyOS中使用的WebGL是基于OpenGL裁剪的OpenGL ES,可以在HTML5的canvas元素对象中使用,无需使用插件,支持跨平台。WebGL程序是由JavaScr…

Hudi入门

一、Hudi编译安装 1.下载 https://archive.apache.org/dist/hudi/0.9.0/hudi-0.9.0.src.tgz2.maven编译 mvn clean install -DskipTests -Dscala2.12 -Dspark33.配置spark与hudi依赖包 [rootmaster hudi-spark-jars]# ll total 37876 -rw-r--r-- 1 root root 38615211 Oct …

【Python从入门到进阶】50、当当网Scrapy项目实战(三)

接上篇《49、当当网Scrapy项目实战(二)》 上一篇我们讲解了的Spider与item之间的关系,以及如何使用item,以及使用pipelines管道进行数据下载的操作,本篇我们来讲解Scrapy的多页面下载如何实现。 一、多页面下载原理分…

【Leetcode每日一刷】滑动窗口:209.长度最小的子数组

一、209.长度最小的子数组 1.1:题目 题目链接 1.2:解题思路 题型:滑动窗口;时间复杂度:O(n) 🪧 滑动窗口本质也是双指针的一种技巧,特别适用于字串问题 ❗❗核心思想/ 关键:左右…

A5自媒体wordpress主题模板

一个简洁的wordpress个人博客主题,适合做个人博客,SEO优化效果挺不错的。 https://www.wpniu.com/themes/204.html

前端学习之行内和块级标签

行内标签 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>span</title> </head> <body><!-- 行内标签特点&#xff1a;1、不换行,一行可以放多个2、默认宽度内容撑开代表&#…

谈谈我的自媒体创作真实感悟

因为我有数十款APP和小程序&#xff0c;基本都是些辅助内容创作的工具&#xff0c;于是我就顺水推舟做了几个自媒体账号&#xff1a;微信公众号&#xff0c;抖音&#xff0c;知乎&#xff0c;小红书&#xff0c;CSDN等&#xff0c;账号的名字都是全赞工程师。 目前这些号有收入…