细说iOS静态库与动态库

iOS中的静态库和动态库

静态库

  • 静态库完全复制进可执行的二进制里面
  • 后缀是.a或者.framework

动态库

  • 动态库是在程序冷启动时候被链接到手机内存或者 App 内存里面
  • 后缀是.tbd或者.framework

关于说明很多,可以看一下网上的文章。我现在说的是基于上面理论的证明。刚开始觉得网上说的可能不太准确,后来得到验证是正确的。

为了研究我们创建的.a.framework到底是静态库和动态库,我们分别创建对应的简单的库。

我们分别可以通过上面图中红色区域创建.framework.a。我们知道区分是静态库还是动态库最终是我们选择的 Mach-O 的类型到底是Dynamic Library还是Static Library

Mach-O 类型

这里简单说一下Mach-O类型,为什么说简单说一下。因为深入我也不了解了,深入可以谷歌资料。

  • Executable:应用的主要二进制

  • Dylib Library:动态链接库(又称DSO或DLL)

  • Static Library:静态链接库

  • Bundle:不能被链接的Dylib,只能在运行时使用dlopen( )加载,可当做macOS的插件

  • Relocatable Object File:可重定向文件类型

静态库和动态库的对比

为了让打出来的库更加的真实,我们使用网上出名的库作为测试。我们选取的是FLEX作为测试的目标,因为这个库所包含的文件多,数据真实性更加的可靠。我们编译的环境是基于iPhone 6s Plus进行编译出来的,真正的大小会包含其他框架会比我测试大得多。

二进制大小

二进制大小(iPhone 6s Plus) .a .framework
静态库 6.8MB 4.6MB
动态库 1.6MB 1.
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值