【问题标题】:How to create a universal dylib from pre-built dylibs for each architecture?如何从每个架构的预构建 dylib 创建通用 dy​​lib?
【发布时间】:2014-05-12 02:00:18
【问题描述】:

对于另一个通用库,我需要将 2 个现有的 dylib(此处为 x86 和 x64)组合成一个通用库。在不重新构建现有库的情况下如何做到这一点?

【问题讨论】:

  • @trojanfoe:你能详细说明一下吗? libtool 不工作吗?
  • 不,这与分解二进制可执行文件相同。一旦链接器完成其工作、重定位、转储未使用的函数等,就很难(不可能?)将其恢复为可以重新链接的东西。唯一真正的选择是拥有目标文件并使用它们创建.dylib。然而,目前尚不清楚为什么拥有 2 个.dylibs 如此重要...
  • @trojanfoe 组合 dylib 的原因搁置一旁 - 是否应该(理论上)将一个 dylib 附加到另一个并合并符号表(对符号应用偏移量)?我对 dylib 的结构只有一个基本的了解,所以如果我听起来很傻,请原谅我。我是来学习的:)
  • 非常非常怀疑。只是不存在执行此操作的工具,因为(通常)不需要它。
  • @trojanfoe 是的,我知道可能没有这样的工具。我的意思是问理论上是否有可能——如果一个人能够创造出这样的工具,不管这是否真的有意义。我只是想扩展我对当前库和框架的内部运作的理解。你能推荐一些关于这个问题的好书吗?

标签: cocoa xcode5


【解决方案1】:

实际上,一旦你知道它就非常容易做到。有一个名为 lipo 的工具可以用 dylib 做很多事情。一种是结合两个(或更多)库。例如:

lipo lib1.dylib lib2.dylib -output combined.dylib -create

其中 lib1 可以是 i386,而 lib2 可以是 x86_64 架构类型。它将在包含两个拱门的本地文件夹中创建一个 dylib。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2017-12-07
    • 2017-10-13
    相关资源
    最近更新 更多