美文网首页
静态库与动态库有什么区别?

静态库与动态库有什么区别?

作者: _笑口常开 | 来源:发表于2020-09-06 11:21 被阅读0次

iOS

概述

  • 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
  • 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。

静态库以及动态库的形式

  • 静态库:.a和.framework
  • 动态库:.dylib和.framework

.framework为什么既是静态库也是动态库?

  • 系统的.framework是动态库,开发者自己建立的.framework是静态库。

静态库 .a 与 .framework 有什么区别?

  • 内容不同:.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件;
  • 使用方式不同:.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用;
  • 总结:.a + .h + sourceFile = .framework,建议用.framework。

iOS 中为什么使用静态库?

  • 和别人分享你的代码库,但不想让别人看到你代码的实现。
  • 可以把固定的业务模块化成静态库,实现iOS程序的模块化。
  • 总结:方便共享代码,便于合理使用。

引用参考自:

简书:静态库与动态库的区别?
B站:iOS开发 面试特训班-静态库与动态的区别


Linux

代码被载入的时刻不同以及体积大小不同

  • 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大。
  • 动态库(共享库)的代码在可执行程序运行时才载入内存,在编译过程中仅简单的引用,因此代码体积比较小。

份数不同

  • 不同的应用程序如果调用相同的库,那么在内存中只需要有一份该动态库(共享库)的实例。

动态库的优点

  • 静态库和动态库的最大区别,静态情况下,把库直接加载到程序中,而动态库链接的时候,它只是保留接口,将动态库与程序代码独立,这样就可以提高代码的可复用度,和降低程序的耦合度。

相关文章

网友评论

      本文标题:静态库与动态库有什么区别?

      本文链接:https://www.haomeiwen.com/subject/lgtasktx.html