【问题标题】:What is the difference between .dylib and .a lib in ios?ios中的.dylib和.a lib有什么区别?
【发布时间】:2016-11-28 10:10:40
【问题描述】:

我知道什么是 Objective c 中的编译和运行时,(方法 swizzling 是运行时)但我想知道这两个库之间的界限是什么?一个 .a 和 .dylib ?除了说明一个是静态的,另一个是动态的之外,它们还有什么用途?我们什么时候需要一个而不是另一个?

【问题讨论】:

    标签: ios xcode frameworks static-libraries


    【解决方案1】:

    静态库(.a)

    静态库允许应用程序在编译时将代码加载到其地址空间中。这会导致磁盘空间变大,启动时间变慢。因为库的代码直接添加到链接目标的二进制文件中,这意味着要更新库中的任何代码,也必须重建链接目标。 动态库(.dylib)

    动态库允许应用程序在运行时实际需要时将代码加载到其地址空间中。因为代码不是静态链接到可执行二进制文件中的,所以在运行时加载有一些好处。主要是,可以使用新功能或错误修复来更新库,而无需重新编译和重新链接可执行文件。此外,在运行时加载意味着各个代码库可以有自己的初始化程序,并在从内存中卸载之前在自己的任务之后进行清理

    【讨论】:

    【解决方案2】:

    .a 代表静态库

    .dylib 代表动态库

    静态库 (.a)

    静态库 (.a) 是一组已编译的类和函数,可与 iOS 应用程序开发项目一起使用。它是编译后的二进制文件或胖文件,可以在项目之间共享。

    您可能出于不同的原因想要创建一个静态库。

    例如:

    • 您希望捆绑您和/或您团队中的同事经常使用的一些课程,并轻松共享这些课程。

    • 您希望能够集中一些通用代码,以便轻松添加错误修复或更新。

    • 您想与多人共享一个库,但不允许他们看到您的代码。 -

    动态库

    以扩展名.dylib 结尾的文件是一个动态库:它是一个在运行时而不是在编译时加载的库。如果您熟悉来自 Windows 或 DSO 的 DLL,那么它或多或少是相同类型的东西,只是有些曲折。

    dylib 类似于 windows *.dll 文件。它们包含旨在被许多应用程序重用的通用、不可修改的代码。

    【讨论】:

      猜你喜欢
      • 2019-10-19
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 2013-12-24
      • 1970-01-01
      相关资源
      最近更新 更多