OC高级强化04:静态库和动态库
常见的库文件格式
- .a 静态库
- .dylib 传统意义的动态库
- .framework 可静态库也可动态库
- .xcframework 2018年推出的针对不同架构的库
什么是库?
库(Library
)说白了就是一段编译好的而进行代码,加上头文件就可以供别人使用
什么时候会用到库?
- 某些代码需要给别人使用,但是我们不希望别人看到源码,就需要咦库的形式进行封装,只暴露出头文件
- 对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要
Link
一下,不会浪费编译时间。
什么是链接?
库在使用的时候需要链接(Link),链接的方式有两种:
静态
动态
.a静态库
.o
文件的合集
.dylib动态库
.a
静态库 链接
之后的产物,即最终链接产物
什么是tdb格式
tdb全程是text-based stub libraries,本质上就是一个YAML描述的文本文件。
他的作用是用于记录动态库的一些信息,包括导出的符号、动态库的架构信息、动态库的依赖信息
用于避免在真机开发过程中直接使用传统的dylib。
对于真机来说,由于动态库都是在设备上,在xcode上使用基于tbd格式的伪framework可以打打减少xcode的大小
@rpath
Runpath search Paths
dylib 搜索路径
运行时 ‘@rpath’ 指示 ‘dylib’ 按顺序搜索路径列表,以找到动态库,‘@rpath’ 保存一个活多个路径变量
@rpath 谁链接我,谁给我提供rpath
@executable_path:表示可执行程序所在你的目录,解析为可执行文件的绝对路径
@loader_path:表示被加载的Mach-O所在的目录,每次加载时,都可能被设置为不同的路径,由上层指定
- Post title:OC高级强化04:静态库和动态库
- Post author:张建
- Create time:2022-01-07 15:52:13
- Post link:https://redefine.ohevan.com/2022/01/07/OC底层原理/OC高级强化04:ZJBlog 2/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.