美文网首页
静态库和动态库的区别

静态库和动态库的区别

作者: kakao6 | 来源:发表于2020-08-17 22:15 被阅读0次

库是程序代码的集合,是共享程序代码的一种方式

1.

一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。

另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要Link一下,不会浪费编译时间。

2.静态库:

静态库即静态链接库。链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝,且这段代码在目标程序里不会再改变。

优点

编译完成之后,库文件实际上就没有作用了。目标程序没有外部依赖,直接就可以运行。

缺点

会使用目标程序的体积增大。

动态库:

动态库即动态链接库。与静态库相反,动态库在链接时不复制(目标程序中只会存储指向动态库的引用),程序运行时由系统动态加载到内存,系统只加载一次,多个程序共用(如系统的UIKit.framework等),节省内存。

优点

不需要拷贝到目标程序中,不会影响目标程序的体积,而且同一份库可以被多个程序使用(因为这个原因,动态库也被称作共享库)。

运行时才载入的特性,也可以让我们随时对库进行替换,而不需要重新编译代码。

缺点

动态载入会带来一部分性能损失,使用动态库也会使得程序依赖于外部环境。如果环境缺少动态库或者库的版本不正确,就会导致程序无法运行(Linux 下喜闻乐见的 lib not found 错误)。

.a和.framework的区别:

.a是纯二进制文件,.a文件不能单独使用,至少要有.h文件配合

.framework除了二进制文件外,还包含一些资源文件(头文件,plist等),由于自身包含了头文件,所以.framework可以单独使用。

相关文章

  • iOS里的动态库和静态库

    介绍 动态库形式:.dylib和.framework 静态库形式:.a和.framework 动态库和静态库的区别...

  • Xcode7中创建静态库

    一、静态库和动态库的区别: 静态库和动态库是相对编译期和运行期的,静态库以 .a 和 .framework 形式存...

  • 创建静态库

    一、静态库和动态库的区别: 静态库和动态库是相对编译期和运行期的,静态库以 .a 和 .framework 形式存...

  • 目录一、库二、静态库、动态库、Framework三、打包静态库 1、.a静态库和.framework静态库的区别 ...

  • iOS静态库与动态库的区别与打包

    iOS静态库与动态库的区别与打包iOS静态库与动态库的区别与打包

  • iOS 库.a 和 framework的区别

    一、什么是库? 共享代码便是库,实现代码的复用,一般分为静态库和动态库。 二、静态库和动态库的区别? 静态库:链接...

  • 静态库与动态库相关知识笔记(转)

    "静态库与动态库"参考静态库与动态库的区别与优缺点

  • iOS 创建静态库

    一、静态库和动态库的区别 静态库和动态库是相对编译期和运行期的,在存在形式上,静态库是以 .a 和 .framew...

  • iOS生成 .framework静态文件

    一、什么是库? 库是共享程序代码的方式,一般分为静态库和动态库。 二、静态库和动态库的区别? 静态库:链接时完整地...

  • iOS-SDK开发之制作自己的静态库 .framework和.a

    先来看几个概念定义: 什么是库?库是共享程序代码的方式,一般分为静态库和动态库。 静态库和动态库的区别?静态库:链...

网友评论

      本文标题:静态库和动态库的区别

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