将静态库合并为单个

时间:2012-06-20 13:32:43

标签: iphone ipad static-libraries

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

我有三个静态库libSignatureLibary_armv6.a,libSignatureLibary_armv7.a和libSignatureLibary_i368.a

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

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

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

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

可以建议我为这三个人建立公共库。

@thanks提前 基兰

3 个答案:

答案 0 :(得分:29)

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

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

答案 1 :(得分:0)

lipo command

  

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

lipo中的

liposuction。如您所知,在构建项目时,Xcode会为不同的CPU体系结构生成二进制文件。

  • 当开发人员想要共享生产者二进制文件作为闭包形式时,他应考虑到客户端应该有可能在实际设备和模拟器上使用此二进制文件运行/调试项目。这个简单的示例说明开发人员必须具有一种工具,可以将用于不同架构的二进制文件合并到单个文件-fat二进制文件中。
  • 另一个示例是,当您将应用程序发布到AppStore时,可以使用-remove选项删除不必要的arch。

  • 如果尝试使用二进制文件构建项目而没有必要的架构,则会出现错误[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>

答案 2 :(得分:-1)

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