cda*_*yor 5 clang app-store ios
分布式应用程序的大小是否受选择使用静态库或动态框架进行依赖关系的影响?我读过一篇较旧的文章,声称Clang足够聪明,仅在使用静态库时才链接应用程序使用的符号,但对于动态框架则不是这样。还是这样吗?
编辑:澄清这与在App Store上分发的iOS应用程序有关
libfoo.a如果您可以在链接某个库的静态构建和同一库的动态构建之间进行选择libfoo.{dynlib|so},则链接静态库很可能会使您的可执行文件比链接动态库更大。
静态联动产生的额外重量将根据以下因素而变化:-
但总的来说:-
静态链接要求可执行文件引用并由库提供的任何符号的定义必须从库中提取并物理合并到可执行文件中。对于数据符号,定义是一些二进制数据。对于函数符号,定义是函数的二进制实现。
动态链接仅需要链接器将一些简明的结构化信息合并到可执行文件中,操作系统加载程序将在运行时将这些信息解释为将动态库从磁盘加载到程序的地址空间中的指令,然后解析 程序对符号的引用是在库中定义的。
通常,如果在运行时从动态库提供定义,则不需要合并到可执行文件中的定义的大小比指示加载器加载动态库的信息的大小大得多。
我们拥有动态库,因此具有共同功能和/或数据值的不同程序不需要物理合并它的副本。
| 归档时间: |
|
| 查看次数: |
544 次 |
| 最近记录: |