【问题标题】:merge static libraries into single将静态库合并为单个
【发布时间】:2012-06-22 15:53:57
【问题描述】:

如何将静态库合并为一个?

我确实有三个静态库 libSignatureLibary_armv6.a 、 libSignatureLibary_armv7.a 和 libSignatureLibary_i368.a

现在我想将这三个文件合并到一个可以命名为 libSignatureLibary.a 的库中

在谷歌搜索时,我发现了 lipo 是开源工具!

我是否需要运行任何额外的脚本语言来合并

或在终端 lipo 中并传递 lipo 的参数。

任何人都可以建议我为这三个构建公共库。

@提前谢谢 基兰

【问题讨论】:

  • 你更喜欢命令行还是 xcode?​​span>
  • 任何东西!需要合并文件的~如果可能的话请告诉我路径!

标签: iphone ipad static-libraries


【解决方案1】:

打开终端并转到包含您的库的文件夹。 然后使用命令:

lipo -create libSignatureLibary_armv6.a libSignatureLibary_armv7.a libSignatureLibary_i368.a -output libSignatureLibary.a

【讨论】:

    【解决方案2】:
    lipo -create libSignatureLibary_armv6.a libSignatureLibary_armv7.a libSignatureLibary_i368.a -output libSignatureLibary.a
    

    【讨论】:

    • lipo -create libSignatureLibary_armv6.a libSignatureLibary_armv7.a libSignatureLibary_i368.a -output libSignatureLibary.a
    • 请编辑更多信息。不建议使用纯代码和“试试这个”的答案,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。
    • 这与接受的答案完全相同,但信息较少。
    【解决方案3】:

    lipo command

    创建或操作通用文件:将通用二进制文件转换为单个架构文件,反之亦然。

    lipo 来自liposuction。如您所知,当您构建项目时,Xcode 会为不同的 CPU 架构生成二进制文件。

    • 团结。当开发人员希望将生产者二进制文件作为封闭源共享时,他应该考虑到客户端应该有可能在真实设备和模拟器上使用此二进制文件运行/调试项目。这个简单的例子表明开发人员必须有一个工具来将不同arch的二进制文件合并到一个文件中——fat二进制文件。

    • 分开。另一个例子是,当您将应用发布到 AppStore 时,您可以使用 -remove 选项删除不必要的拱门。

    • 如果您尝试使用没有必要架构的二进制文件构建项目,您会收到错误[Could not find module for architecture]

    架构:

    • 模拟器 - x86_64、i386
    • 设备 - armv7、armv7s、arm64

    如果您尝试对具有相同架构的二进制文件运行此命令,您将得到

    fatal error: <binary_list> have the same architectures (<arch>) and can't be in the same fat output file
    

    请注意-create 选项没有参数

    lipo libMy_armv6.a libMy_armv7.a libMy_i368.a -create -output libMy.a
    

    检查现有架构

    lipo -info <binary_path>
    //or
    file <binary_path>
    

    下一步是[XCFramework]

    [Vocabulary]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 2012-11-09
      相关资源
      最近更新 更多