操作系统(四):动态链接与静态链接的区别

2023-05-16

在回答这个问题之前希望大家大概了解一个文件编译的过程,比如一个C文件在编译成功后文件夹里的文件会有什么变化,大家可以先去创建一个helloworld.c的文件,观察其编译后的变化。

那么问题来了 面试官经常会问到动态链接和静态链接的区别,这到底是什么鬼,作为马上面试的小白如何快速理解这道题呢~ 不要急

 

这道题我们要理解动态库和静态库区别,

1,了解其文件命名格式

静态库:linux下 libxxx.a windows下xxx.lib

动态库:linux下libxxx.so windows下xxx.dll

 

2,了解含义区别

静态库:LIB包含函数代码本身,在编译时直接将代码加入程序当中

动态库:LIB包含了函数所在的DLL文件和文件中函数位置的信息,代码由运行时加载在进程空间中的DLL提供

 

静态链接需要静态库:链接器从静态链接库LIB获取所有被引用函数,并将库同代码一起放到可执行文件中。

动态链接需要动态库:允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL中函数的可执行代码所需的信息。

 

3,实战例子一语中的

在输入url中,我们发现有的url带❓ 有的url不带❓

那么这个❓问号就是判断动态链接和静态链接的不二法门。

举一个例子:

动态链接:https://www.xuewangzhan.net/?p=388

静态链接:https://www.xuewangzhan.net/zichu/468.html

打开两个网站得到的内容会完全一样,然而这个❓就是区分二者的关键

伪静态设置后(动态链接—静态链接 只需要上传伪静态文件)可以优化网站排名,说白了就是在百度,谷歌等搜索引擎排名靠前 更易出现在结果,所以这也是静态链接的优势。

 

静态链接优点:

#pragma comment(lib, "test.lib") ,静态链接的时候,载入代码就会把程序会用到的动态代码或动态代码的地址确定下来静态库的链接可以使用静态链接,动态链接库也可以使用这种方法链接导入库。

静态链接较易被搜索引擎蜘蛛抓取。

 

动态链接优点:

LoadLibrary()/GetProcessAddress()和FreeLibrary(),使用这种方式的程序并不在一开始就完成动态链接,而是直到真正调用动态库代码时,载入程序才计算(被调用的那部分)动态代码的逻辑地址。然后等到某个时候,程序又需要调用另外某块动态代码时,载入程序又去计算这部分代码的逻辑地址。

这种方式使程序初始化时间较短,但运行期间的性能比不上静态链接的程序。

 

深度剖析可见:https://blog.csdn.net/wqfhenanxc/article/details/80496522

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统(四):动态链接与静态链接的区别 的相关文章

  • 如何学习开源飞控

    前言 有一段时间没有更新文章了 新的一年新气象 xff0c 因此还是要抽出时间 xff0c 写点总结与思考 xff0c 对自己的成长也是很有帮助 今天主要想聊一下开源飞控的学习 本人在5年前 xff0c 在知乎下写过一篇回答 xff0c 如
  • 控制系统的观测器基础知识

    1 为什么需要用到观测器 控制原理中的系统框图 xff0c 往往都是假设反馈状态为理想值 但在工程实践中 xff0c 这个是做不到的 一般我们采用传感器测量控制的反馈状态 xff0c 而传感器的测量值 xff0c 存在几个问题 xff1a
  • 浅谈飞控的软件设计

    写在前面 开这个专栏的目的主要是深感自己对飞控软件 算法的知识点过于杂乱 xff0c 很久没有进行系统的总结了 xff0c 因此决定写几篇文章记录一些飞控开发过程的知识点 主要是针对一些软件 算法部分进行讨论 xff0c 如内容有错误 xf
  • 飞控IMU数据进阶处理(FFT,滤波器)

    前面的文章 xff08 知乎专栏 https zhuanlan zhihu com c 60591778 xff09 曾简单讲过IMU数据 xff08 陀螺仪 加速度数据 xff09 的校准以及一阶低通滤波 本文在此基础上更进一步讲一下数据
  • (5)py接口自动化之配置文件&数据库连接详解

    目录 一 配置文件 ini amp yaml 1 作用 2 ini A 语法 B 特点 C 操作方法 3 yaml A 安装第三方库 B 支持的数据类型 C 特性 D 语法 E 数据读取 二 数据库连接与pytho配置文件 1 安装数据库
  • 再谈IMU数据处理(滤波器)

    本文开始前 xff0c 先回答一个问题 上一篇文章最后提到了卡尔曼滤波器用来做一维数据的数字滤波处理 xff0c 最终的实验结果说 xff1a 该模型下的卡尔曼滤波处理与二阶IIR低通滤波处理效果几乎一致 有网友指出是错误的 xff0c 卡
  • s3操作ceph 创建bucket 报错 命名 错误 botocore.exceptions.ClientError: An error occurred (InvalidBucketName)

    报错信息 Traceback span class token punctuation span most recent call last span class token punctuation span s3 create bucke
  • windows 10 上传文件夹到 Linux服务器 压缩文件夹 到tar.gz格式

    有时候需要把win10上的一个文件夹传到Linux服务器上 简洁的做法是先压缩成 tar gz 再用xftp上传 其中win端的压缩软件一般无法直接压缩成tar gz格式 可用在cmd中 用命令压缩 xff1a span class tok
  • NS3 socket 发送 packet因Tag值过大发送失败

    NS3使用中遇到一个问题 xff1a NS3中当Tag内值过大 xff08 没有超过数据结构可用大小 xff09 的时候 出现socket Send xff08 packet xff09 失败的情况 现在有三个节点 结构如下 span cl
  • 一行代码安装Tensorflow GPU Ubuntu20.04 Windows

    本文内容 xff1a Ubuntu20 04下使用Anaconda 配置Tensorflow GPU环境 Windows操作系统也可行 xff0c 换成Win下的anaconda安装方法即可 Why conda xff1f 使用conda安
  • python无法引用另一个python文件问题 文件名命名问题

    问题 xff1a python的from xxxx py import 语句无法获取另一个python文件 例子 xff1a 在A py的同级目录下有另一个文件xxx xxx py xff08 文件无错 xff0c 可运行 xff09 在A
  • Ubuntu20.04 安装显卡驱动 安装pytorch

    1 查看推荐的驱动 ubuntu span class token operator span drivers devices driver span class token operator span nvidia span class
  • Ubuntu LVM 逻辑卷操作 创建 删除

    先检查新硬盘是否插入 xff1a fdisk l 或者 df h 或者 lsblk 创建LVM 1 将物理磁盘设备初始化为物理卷 pvcreate dev sdb dev sdc 查看物理卷信息 xff1a pvdispaly 或者 pvs
  • Ubuntu20.04 Server 安装NS3 速通版

    官网内容 xff1a https www nsnam org wiki Installation 目录如下 xff1a 官网内容 第一章内容基本可以跳过在第二章中可以查看对应OS需要的安装环境 xff0c 当然我尝试过Ubuntu20 04
  • Ubuntu20 修改系统时区为 国内时间

    问题 xff1a 一般情况下 xff0c Ubuntu时间与实际时间相差8小时 xff0c 因为他的时区设置为0时区 xff0c 而我们想让他为北京时间 校正方法如下 xff1a 运行tzselect xff0c 选择Asia xff08
  • (7)http请求、https请求详解

    一 基础知识 1 OSI七层模型 xff1a 参考 xff1a OSI七层模型详解 小鹏 加油的博客 CSDN博客 osi七层模型 这个博主说的很详细 xff0c 感兴趣的可以去学习一下 如果不感兴趣的话记住tcp ip协议是在传输层就好了
  • 回归问题的评价指标 MAE MSE RMSE R2 score Adjusted R2 score 和 重要知识点总结

    除了MSE 和MAE外回归还有什么重要的指标吗 xff1f R2 score amp Adjusted R2 score 我们用一个回归问题来介绍这些指标 xff0c 我们的其中输入是工作经验 xff0c 输出是薪水 下图显示了为预测薪水而
  • Linux tar 压缩 解压

    tar 操作的参数 xff1a v xff1a 打印出命令执行过程 c xff1a 创建新归档 xff0c 即打包 x xff1a 提取归档文件 xff0c 即解包 z xff1a 使用 gzip 压缩格式 j xff1a 使用 bzip2
  • tmux 基础使用 xshell 远程连接服务器 断电 断网后保持程序运行

    应用场景 Xshell 远程连接服务器 xff0c 断电 or 断网等原因 xff0c 导致Xshell会话关闭 xff0c 然而 xff0c 此时如果有程序在运行也会被中断 xff0c 对于那些需要长时间运行的程序 xff0c 如何避免程
  • leetcode 3. 无重复字符的最长子串 优化代码效率

    标准解法 xff1a 滑动窗口 xff0c 可见官方题解 核心内容是使用一个set或者map维护当前窗口出现的字符 查看了一下别人运行速度最快的写法发现优化方法是 使用一个vector lt int gt cnt 128 来记录字符是否出现

随机推荐

  • C++ 演奏《起风了》

    来源 xff1a https www bilibili com video BV1tv4y1D7iW is story h5 61 false amp p 61 1 amp share from 61 ugc amp share mediu
  • c ++ Set存放自定义 结构体 类 重载比较运算符

    结构体 xff1a 结构体重载操作在结构体外实现 span class token macro property span class token directive hash span span class token directive
  • c++ 哈希map unorder map set 存放自定义结构体作为key

    c 43 43 中的哈希map xff0c 即unorder set与unorder map如何使用结构体作为key 示例代码如下 xff1a span class token macro property span class token
  • leetcode 5 回文子串

    题目 很明显暴力方法是n平方复杂度 xff0c 所以一直在想有没有不是n平方复杂度的方法 然后就掉坑里了 最后看了题解发现其实就是n平方复杂度 xff0c 所以就直接暴力了 附上一份随手暴力代码 xff0c 遍历对称中心 span clas
  • 【ceph】理解Ceph的三种存储接口:块设备、文件系统、对象存储

    Ceph是一个开源的 统一的 分布式的存储系统 xff0c 这是我们宣传Ceph时常说的一句话 xff0c 其中 统一 是说Ceph可以一套存储系统同时提供块设备存储 文件系统存储和对象存储三种存储功能 一听这句话 xff0c 具有一定存储
  • 二叉树的迭代遍历 前序 中序 后序 模板

    作为个人学习笔记 xff0c 原出处讲的很清楚 xff1a 代码随想录 非标记法 使用非标记法写的话 xff0c 中序的代码风格和前后序完全不同 中序 xff1a span class token keyword class span sp
  • (8)requests发起get/post请求

    一 基本概念 1 什么是接口 前后端数据传输的通道 2 http请求的接口 协议 43 域名 ip 43 接口地址 43 请求参数 3 http请求的要素 请求地址 43 请求方法 43 请求数据 二 request请求接口 1 安装 pi
  • 【面试必备】面向Android开发者的复习指南!最全的BAT大厂面试题整理

    近日一好友去阿里面试 xff0c 面试失败了 xff0c 分享了一个他最不擅长的算法面试题 题目是这样的 题目 xff1a 给定一个二叉搜索树 BST xff0c 找到树中第 K 小的节点 出题人 xff1a 阿里巴巴出题专家 xff1a
  • c memcpy 带重叠部分 实现

    主要是要注意当目标地址在源地址后面且存在重叠区域的时候 xff0c 需要从后往前复制 span class token macro property span class token directive hash span span cla
  • 主流PCB画图软件的对比区别(AD、Pads、Allegro)

    国内的EDA软件市场几乎被三家瓜分 xff0c 分别是Altium Mentor Pads Cadence xff0c 也是我们这次主要分析和比较的软件 本人用的多的是 Alitum 也用过allegro xff0c pads目前还没用过
  • 新书推荐 |《Prometheus监控实战》

    新书推荐 Prometheus监控实战 点击上图了解及购买 Docker公司前服务与支持副总裁 Kickstarter前首席技术官 Empatico首席技术官撰写 xff0c 全方位介绍继Kubernetes之后的第二个CNCF毕业项目 P
  • 腾讯大数据总体架构图,对外公开!

    导读 xff1a 腾讯作为国内体量最大的互联网公司之一 xff0c 业务涵盖用户日常生活的方方面面 xff0c 面对如此巨大业务数据量 xff0c 如果不能对数据进行专业化处理并高效有序地存 管 用 xff0c 如果不能使数据产生应有的价值
  • API安全实战

    一提起 信息安全 xff0c 不管是业内专家还是所谓的 吃瓜群众 xff0c 多半都会在脑海中浮现 网络安全 Web安全 软件安全 数据安全 等常见的词汇 市面上绝大多数安全类书籍也多集中在这几个领域 xff0c 而从API视角阐释信息安全
  • 【第115期】世界一流大学计算机专业,都在用哪些书当教材?

    导读 xff1a 转眼间离新学期开学又不远了 清华 北大 MIT CMU 斯坦福的学霸们在新学期里要学什么 xff1f 本文就带你盘点一下那些世界名校计算机专业采用的教材 不用多说 xff0c 每本都是经典的烧脑技术书 xff0c 建议配合
  • 什么是AB实验?能解决什么问题?终于有人讲明白了

    导读 xff1a 走向身边的AB实验 作者 xff1a 木羊同学 来源 xff1a 大数据DT xff08 ID xff1a hzdashuju xff09 AB实验 是一个从统计学中借来的工具 我和大家一样 xff0c 每次只要看到 统计
  • 树莓派3b引脚图

    如上图所示 xff0c 我们可以很清楚的看到各个引脚的功能 例如我们想使用pwm引脚来控制舵机 xff0c 则我们可以考虑使用其中的 BCM18 PWM0 和 BCM13 PWM1 在使用wiringPi库时 xff0c 我们定义的引脚即B
  • 跟踪slab分配堆栈流程的方法(perf、systemtap)

    跟踪slab分配堆栈流程的方法 xff08 perf systemtap xff09 内存泄露是在解决内核故障会遇到的棘手情况 xff0c 根据具体的内存使用情况 xff0c 追踪相应slab cache的分配堆栈流程 xff0c 是追踪泄
  • prometheus+grafana监控mysql、canal服务器

    一 prometheus配置 1 prometheus安装 1 1官网下载安装包 xff1a https prometheus io download 1 2解压安装包 xff1a tar zxvf prometheus 2 6 1 lin
  • mac配置jmeter

    一 步骤 1 安装jdk1 8版本 xff0c 因为jmeter是基于java环境运行的 2 安装jmeter5 x版本 二 安装jdk 1 下载jdk Java Downloads Oracle 2 下载好之后安装 xff0c 全部下一步
  • 操作系统(四):动态链接与静态链接的区别

    在回答这个问题之前希望大家大概了解一个文件编译的过程 xff0c 比如一个C文件在编译成功后文件夹里的文件会有什么变化 xff0c 大家可以先去创建一个helloworld c的文件 xff0c 观察其编译后的变化 那么问题来了 面试官经常