我有一个很大的iOS项目,它由几个(大约20-30个)静态库组成,这些静态库链接到最终的可执行文件中。一些组件是独立于平台的(纯C ++),一些是特定于iOS的(Obj-C / Obj-C ++)。 C ++模板被密集使用,因此每个目标文件都包含许多带有模糊链接的符号。问题是这些符号仅在最终可执行文件的链接期间合并,但在创建静态库时不合并。每个库包含大量重复的符号(6-60个克隆)。所以应用程序的最终链接需要几分钟。在调试和做一些小的改动时,这变得非常烦人。
有没有办法为每个库执行符号与模糊链接的合并?
我知道,这是在使用动态库时自动完成的。通过一些黑客攻击(http://sumgroup.wikispaces.com/iPhone_Dynamic_Library),可以为iOS构建动态库。有没有办法静态链接dylib(将它们链接到一个可执行文件)?
当然,能够调试生成的应用程序是必须的。
答案 0 :(得分:11)
您可以将静态库对象预先链接到单个对象,也可以将其他静态库预先链接到一个。它实际上会将对象链接到链接器(几乎就像在动态库中一样)。
Perform Single-Object Prelink
。将其切换为是$(CONFIGURATION_BUILD_DIR)
变量。因此,如果你有库foo,那么它将是$(CONFIGURATION_BUILD_DIR)/libfoo.a