Xcode for iPhone 中静态库和动态库的区别

Posted

技术标签:

【中文标题】Xcode for iPhone 中静态库和动态库的区别【英文标题】:Difference between static and dynamic library in Xcode for iPhone 【发布时间】:2010-09-16 05:03:34 【问题描述】:

XCode 中的静态库和动态库有什么区别?为什么 Apple 不允许我们在 ios 应用程序中使用动态库?

【问题讨论】:

【参考方案1】:

虽然您可以为 Mac OS X 构建动态库,但您不能将它们用于 iPhone 开发。

静态库只是目标文件的存档,这些文件被拉入链接到它的程序中。链接器将取消归档所有存档文件,并在链接期间将它们与其余目标文件一起拉入。

然而,动态库会创建一个共享对象文件,类似于程序但没有入口点,程序可以链接这些共享库并将其自身调用到这些共享库中以获得它们的符号,而无需将它们拉入自身。

【讨论】:

目前你无法在 iOS 设备上使用自定义动态库,除非它们是苹果提供的。阅读:随 SDK 一起提供。我希望这可以为您解决问题。【参考方案2】:

动态库对于 iphone 应用没有任何意义,因为无法在手机上安装该库。我记得读过一些文档,其中苹果表示他们决定不使用动态库,因为他们不希望用户不得不处理查找/更新库的麻烦。为每个应用安装 1 个捆绑包要容易得多。

【讨论】:

【参考方案3】:

Apple 确实允许您制作动态库。在 Mac OS X 上,它们以 .bundle 或 .dylib 结尾(在 Linux 上不是 .so 或 .a)。

你具体想做什么?您是否为您的 dylib 创建了目标?

【讨论】:

我说的是 i-phone .a 文件

以上是关于Xcode for iPhone 中静态库和动态库的区别的主要内容,如果未能解决你的问题,请参考以下文章

iOS XCode7制作.Framework动态库和.a静态库的总结

使用 XCode 3 对 iPhone 静态库进行单元测试

iOS 静态库和动态库对ipa包大小的影响

Xcode生成静态库和bundle

iOS 静态库和动态库相关

组件化-动态库实战