25

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

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

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

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

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

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

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

@在此先感谢基兰

4

3 回答 3

46

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

lipo -create libSignatureLibary_armv6.a libSignatureLibary_armv7.a libSignatureLibary_i368.a -output libSignatureLibary.a
于 2012-06-20T19:35:11.797 回答
3

lipo命令

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

lipoliposuction. 如您所知,当您构建项目时,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]

[词汇]

于 2019-12-06T14:43:04.073 回答
-2
lipo -create libSignatureLibary_armv6.a libSignatureLibary_armv7.a libSignatureLibary_i368.a -output libSignatureLibary.a
于 2016-09-12T07:59:50.713 回答