Link Fast — 加速编译和App启动
这篇文章主要是对 WWDC 22 的视频 Link Fast——Improve build and launch times 进行归纳总结。
视频里聊到了,静态库和动态库的一些链接细节,以及 Xcode 14 为我们提供了哪些工具,来对我们的编译时长,做一些可能性的优化。
苹果在 Xcode 14 发布了他们开发的最新的静态库链接器——ld64,苹果聊到了4种新的链接器配置,用来为开发者的编译加速——但苹果也说,具体有没有用,还得你亲自在工程里试了,才知道。:)这很苹果。
静态库的选择性链接——通过-all_load和-dead_strip规避
默认的情况下,链接器是按函数的调用顺序进行链接的,这意味着,整个链接是单线程的——因为只有在a调用了b的情况下,链接器才会去链接b。
但如果不需要链接器去进行这个判断,就可以让整个链接过程并发。
可以通过在 other linker flags 中添加-all_load参数,来告诉链接器,全量链接静态库的符号,不需要选择性链接,从而加速链接的过程。
-all_load 也有缺点,因为可能会把不在使用的代码也加载进来,导致包体积变大。
但也可以通过添加 -dead_strip 链接器选项,来将无法访问的代码和数据移除。
何时使用 静态库?
- 任何代码变更&#x