当前位置: 首页 > news >正文

动静态库区别

目录

示例

动静态库区别

定义和链接方式

文件大小

内存使用

更新和维护

 加载时间

依赖关系

适用场景

动静态库总结


示例

Linux系统中ls也是一个进程,它运行也得依赖动态库,那么学习动静态库区别是有必要的!!!

ls依赖哪些库如图所示

下图表示ls在动静态库同时存在时,默认使用动态库!!! 

动静态库区别

静态库和动态库的区别,一下是我所想到的内容~

定义和链接方式

静态库:在编译阶段被链接到可执行文件中,成为可执行文件的一部分。静态库的代码在编译时被拷贝到可执行文件中。

动态库:在程序运行时被加载到内存中,多个程序可以共享同一份动态库的代码

文件大小

静态库:由于静态库的代码被拷贝到可执行文件中,因此可执行文件的大小会增加

动态库:可执行文件中只包含对动态库的引用,因此可执行文件的大小相对较小

内存使用

静态库:每个使用静态库的进程都有自己的静态库副本,因此内存使用量会增加

动态库:多个进程可以共享同一份动态库的代码,因此内存使用效率更高

更新和维护

静态库:如果静态库需要更新,必须重新编译链接所有使用该库的程序

动态库:动态库更新后,所有使用该库的程序在下次运行时会自动使用新版本,无需重新编译链接

 加载时间

静态库:由于静态库在编译时已经链接到可执行文件中,因此程序启动时加载时间较短

动态库:动态库在程序运行时加载,因此可能会增加程序的启动时间

依赖关系

静态库:静态库的代码完全包含在可执行文件中,因此不存在外部依赖问题

动态库:动态库需要在目标系统上存在,因此可能会导致依赖问题,如“DLL地狱”。

适用场景

静态库:适用于需要高度封装不希望外部修改,或者需要避免版本冲突的场景。

动态库:适用于需要共享资源、频繁更新,或者多个程序共同使用的场景。

动静态库总结

 

定义和链接方式文件大小内存使用更新和维护加载时间依赖关系适用场景
动态库运行时加载内存共享代码较小使用效率高无需重新编译和链接增加程序启动时间可能存在依赖共享资源
静态库编译时拷贝到可执行文件较大使用量增加重新编译和链接加载时间短不存在外部依赖高度封装

静态库和动态库的主要区别在于链接方式内存使用

静态库在编译时被链接到可执行文件中,因此可执行文件较大,但运行时不需要外部依赖,更新时需要重新编译,静态库适用于需要高度封装的场景。

动态库在运行时加载,多个程序可以共享,内存使用效率高,更新时只需替换动态库文件,动态库适用于需要共享和频繁更新的场景。

相关文章:

  • 算法题(100):腐烂的苹果
  • js 给元素添加点击事件的方法
  • 【测试篇】关于allpairs实现正交测试用例保姆级讲解,以及常见的错误问题
  • EagleTrader为何重申重要数据前后2分钟禁止交易?
  • 【算法学习计划】动态规划 -- 回文串问题
  • React前端开发中实现断点续传
  • CSS - Pseudo-classes(伪类选择器)
  • TypeScript类型兼容性 vs JavaScript动态类型:深入对比解析
  • 共享经济再中介化进程中的技术创新与模式重构研究——以“开源AI智能名片链动2+1模式S2B2C商城小程序“为例
  • python | 输入日期,判断这一天是这一年的第几天
  • 分布式 IO 模块:氢能源安全高效储运的智能钥匙
  • 项目中使用柯里化函数
  • 优选算法系列(2.滑动窗口 _ 上)
  • 基于CPLD+MCU的3U机箱数字量输入采集板DI,主要针对标准DC110V开关量信号进行采集处理
  • 【CPU】CPU多级缓存和MESI一致性协议
  • 基于System V的共享内存函数使用指南
  • 云原生混合云管理:跨集群智能编排引擎
  • NumPy系列 - 创建矩阵
  • 青少年编程与数学 02-011 MySQL数据库应用 02课题、MySQL数据库安装
  • 微服务架构中10个常用的设计模式
  • 解放日报:“感觉全世界人都在上海买买买”
  • 特朗普公开“怼”库克:苹果不应在印度生产手机
  • 上海市重大工程一季度开局良好,多项生态类项目按计划实施
  • 最高人民法院、中国证监会联合发布《关于严格公正执法司法 服务保障资本市场高质量发展的指导意见》
  • 娃哈哈:自4月起已终止与今麦郎的委托代工关系,未来将坚持自有生产模式
  • 微软宣布全球裁员约3%:涉及约6000人,侧重经理层