Skip to content

动态库

ShenYj edited this page Feb 23, 2022 · 10 revisions

动态库

一、Mach-O下动态库的类型

  • .dylib

    Apple软件系列创建了Mach-O Dynamic Library (DYLIB) Apple Xcode 文件。

    早期苹果使用的动态库格式

    系统的 SDK 都是动态库

  • .tbd

    iOS9 取消了 .dylib, 使用 .tbd 替代

    tbd全程是 text-based stub libraries, 本质上就是一个YAML 描述的文本文件。

    他的作用是用于记录动态库的一些信息,包括导出的符号、动态库的架构信息、动态库的依赖信息

    用于避免在真机开发过程中直接使用传统的dylib

    对于真机来说,由于动态库都是在设备上,在 Xcode 上使用基于 tbd 格式的伪 framework 可以大大减少 Xcode 的大小。

  • .framework:参考: 静态库

  • .xcframework:参考: 静态库

二、生成一个动态库

延续探索静态库的方式,脱离 Xcode, 使用底层工具链

三、动态库的探索

  • 动态库原理

    • 链接framework动态库

      正因为动态库是链接最终产物,所以是无法与 .o 进行合并的

      当使用 -L-l链接一个库的时候,只需要知道符号所在的位置,并不需要源码,本质上是标记了导出符号所在的位置

    • 动态库: 在运行时,由 dyld 动态加载, 在查找符号真实地址的时候找不到了

    • 静态库: 链接的时候代码、符号表已经被合并在一起

    配置动态库路径:

    修改动态库、Mach-OLoad Command:

    使用动态库:

四、资料

Getting Started

Social

Clone this wiki locally