预链接静态库的ios项目
pre-link static libraries for ios project
我有一个大型iOS项目,它由几个(大约20-30个)静态库组成,这些库链接在一起形成最终的可执行文件。有些组件是独立于平台的(纯c++),有些是特定于ios的(Obj-C/obj - c++)。c++模板被大量使用,因此每个目标文件都包含了大量带有模糊链接的符号。问题是这些符号只在最终可执行文件的链接期间合并,而不是在创建静态库时合并。每个库包含大量重复的符号(6-60个克隆)。所以应用程序的最终链接需要几分钟。在调试和做一些小更改时,这变得非常烦人。
是否有一种方法来执行与每个库模糊链接的符号合并?
我知道,当使用动态库时,这是自动完成的。通过一些黑客攻击(http://sumgroup.wikispaces.com/iPhone_Dynamic_Library),可以为iOS构建动态库。有一种方法来链接dylib的静态(链接到一个单一的可执行文件)?
当然,能够调试生成的应用程序是必须的。
您可以将您的静态库对象预链接为单个对象,也可以将其他静态库预链接为一个对象。它实际上会用链接器链接对象(就像在动态库中一样)。
- 在你的单一库(主要的)去构建设置,并在链接部分找到
Perform Single-Object Prelink
。切换到Yes - 在预链接库中,你可以指定你想要包含的其他库。这里不仅需要输入文件名,还需要输入完整的文件名。如果其他库也来自您的项目,那么您可以使用
$(CONFIGURATION_BUILD_DIR)
变量。所以如果你有库foo,那么它将是$(CONFIGURATION_BUILD_DIR)/libfoo.a
- 你可以在单对象预链接标志 中添加额外的标志
- 如果你想去掉局部符号,那么请确保你将部署后处理设置为Yes,因为默认情况下静态库不会被去掉。
相关文章:
- 删除 iOS 项目中的 SDLKey 引用
- 错误的同时将C 文件夹在iOS XCode项目中包括在内
- 如何将C++静态库正确包含到 iOS 项目中
- 在 iOS 项目中添加C++库将无法正确编译
- 与iOS项目上的C 库链接失败
- 从工作iOS项目中导入.cpp文件并将其重命名为.mm问题
- OpenCV c++ 示例进入 iOS 项目
- C++XCode iOS项目中未捕获的异常
- 是否可以从IOS项目中的cpp文件获取文件路径
- iOS项目中的cpp编译问题
- 我是否必须在Xcode iOS项目中释放C的内存分配
- VLCKit 与 iOS 项目中的 .mm 文件冲突
- 将C++代码添加到 iOS 项目
- 编译外部C++库以用于 iOS 项目
- 无法在 xcode ios 项目中声明C++向量
- 实现c++ bitvector在ios项目中的xcode
- 将ios项目转换为android
- 在iOS项目中使用外部FreeVerb C++类时发生链接器错误
- 我可以将一个库作为静态库包含在iOS项目中并将其编译吗?
- 预链接静态库的ios项目