`

[转]开发技巧: 利用lipo 编译合并iPhone模拟器和真机通用的静态类库

 
阅读更多

如何编译静态类库,大家已经比较熟悉了,而且现在网上也有很多教程,就不多罗唆了. 现在问题是, 我们编译好了会是两个版本的.a文件 分别用于模拟器和iPhone真机, 因为Mac和iPhone的CPU不同, 才造成了这样的情况. 有点像 PowerMac 和 InterMac.

屏幕快照 2010-01-01 下午09.34.54.png

在使用静态类库的时候, 我们如果想在模拟器调试, 就必须把用于模拟器版本的lib加到项目里, 同理要想运行在iPhone上, 我们又必须把真机lib也加到项目, 这样确保两个平台都能运行, 但问题是我们总有一个类库是不需要了, 在Snow Leopard的Xcode 3.2中编译的时候会出现一个警告: 没必要加上***.a. Xcode 3.1 也偶尔出现, 没有总结出规律来.

OK, 我们来解决这个问题!

假设两个版本的lib分别是 libIMIUI.s.a , libIMIUI.d.a 我们的目标是 把他们合并成无敌超级通用版的libIMIUI.a :)
打开命令行 Terminal.app 输入:

lipo -create

然后依次把两个.a文件拖到终端窗口, 命令行会变成这样:

lipo -create /Users/Travis/Desktop/libIMIUI.d.a /Users/Travis/Desktop/libIMIUI.s.a

然后接着输入 -output 目标文件路径,如:

-output /Users/Travis/Desktop/libIMIUI.a

最后现在这样一条命令:

lipo -create /Users/Travis/Desktop/libIMIUI.d.a /Users/Travis/Desktop/libIMIUI.s.a -output /Users/Travis/Desktop/libIMIUI.a

回车! 好了, 这样就会生成我们需要的通用类库 libIMIUI.a

分享到:
评论

相关推荐

    IJKMediaFramework的模拟器以及真机的合并包

    在iOS开发中,通常需要分别编译针对模拟器和真机的二进制文件,因为它们的架构不同。模拟器使用i386或x86_64架构,而真机则有armv7、armv7s、arm64等多种架构。为了创建通用版的IJKMediaFramework,我们需要进行以下...

    ios 二维码sdk,整合支持armv7s,合并了模拟器和真机libzbar.a,ZBarSDK

    在iOS开发过程中,我们通常需要在模拟器和真机上进行测试。这两个环境使用的架构不同,模拟器使用i386和x86_64架构,而真机则使用armv7、armv7s、arm64等。libzbar.a是ZBarSDK的静态链接库,为了在两种环境下都能...

    libmp3lame 静态库 for iOS(支持arm64,i386,模拟器,真机测试)

    在本案例中,`libmp3lame.a`是已经编译好的静态库,包含了arm64、armv7和i386架构的支持,这意味着它可以用于运行在不同架构的设备上,包括iPhone真机(arm64和armv7)和iOS模拟器(i386)。 **手动集成步骤** 1. *...

    IOS 静态库打包流程简化详细介绍

    3. **支持模拟器和真机**:分别编译针对模拟器和真机的静态库,然后使用`lipo`命令将它们合并成一个兼容两种环境的库文件。 打包流程如下: 1. **编译模拟器库**:使用`xcodebuild`命令,指定项目文件、构建方案、...

    libmp3lame 静态库 for iOS(支持模拟器,真机,以及两个平台的64位)

    最近升级了系统到Mac OS X 10.10 并且更新了XCode6.1和iOS 8.1之前app用到的libmp3lame.a静态库,也要支持64位的模拟器(x86_64)和64位的真机(arm64)指令集。需要重新编译查阅了下资料,按照如下步骤,并做了些注释...

    ios端ijkplayer编译教程

    第二步:分别在模拟器和真机下编译IJKMediaPlayer,并找到模拟器和真机对应的IJKMediaFramework.framework。 如下所示: 第三步:合成模拟器和真机下的framework,这样才可以在真机和模拟器下同时使用。我这里是将...

    Xcode生成动态库和静态库的方法

    5. **合并模拟器和真机的库**:与.a静态库一样,也需要使用`lipo`命令来合并模拟器和真机的库。 #### 总结 本文介绍了如何在Xcode中创建和管理静态库和动态库。通过详细步骤指导,你可以轻松地创建出符合自己需求...

    Xcode编译静态库方法

    3. **编译**:根据目标设备(iOS设备或模拟器),分别编译两次,生成arm架构(适用于真机)和i386架构(适用于模拟器)的.a文件。这些文件通常位于`DerivedData`目录下。 4. **合并.a文件**:使用`lipo`命令将两个....

    百度地图静态库合并

    百度地图SDK提供了模拟器和真机两中环境所使用的静态库文件,libbaidumapapi.a合并这了这两个静态库。使用lipo命令将设备和模拟器的.a合并成一个通用的.a文件。 iOS SDK v2.6.0版本的静态库

    真机和模拟器合并后的IJKMediaFramework

    9. **编译配置**:为了适配真机和模拟器,开发者通常需要进行不同架构的编译,通过`lipo`命令将不同架构的二进制文件合并为一个fat binary。 10. **API接口**:ijkPlayer提供了清晰的API接口,方便开发者集成到自己...

    iOS静态库生成方法

    5. **合并模拟器和真机的静态库** 如果你需要同时支持模拟器和真机,你需要将两者生成的.a文件合并。打开终端,使用`lipo`命令来完成这个操作。例如: ```bash lipo -create /path/to/debug_version.a /path/to/...

    libmp3lame.a(3.100)静态库for iOS支持真机模拟器全指令集和bitcode

    这意味着这个静态库不仅适用于iPhone真机设备,也适用于iOS模拟器。不同的iOS设备可能使用不同的处理器架构(如ARMv7, ARM64, i386, x86_64),`libmp3lame.a`已经包含了所有这些架构的代码,所以可以在各种设备上...

    pjsip2.4全平台支持静态库,支持 x86_64 armv7 armv7s i386 arm64

    发现真机可以运行了,但模拟器运行不了,如是经过多番折腾,终于对最新的pjsip2.4进行了全平台支持的静态库编译成功,发布出来供大家使用 。 使用方法:解压后替换相应的库文件即可。注意如果之前pjsip是2.0的,...

    ffmpeg静态库合并

    - 由于armv7和armv7s的静态库是分开的,我们需要创建一个通用静态库(Universal Library)以兼容不同的设备。使用lipo命令进行合并:`lipo -create build/lib/libavcodec.a build/armv7s-ios/libavcodec.a -output ...

    xcode 4 制作静态库图文详解

    首先,分别在真机和模拟器环境下编译项目,然后使用`lipo`命令将两个`.a`文件合并为一个通用静态库。这一步骤很重要,因为iOS应用可能需要在多种设备上运行。 创建完静态库后,我们可以开始编写一个使用该库的应用...

    ios openssl 编译批处理

    7. **测试和优化**:编译完成后,记得在模拟器和真机上进行测试,确保OpenSSL在所有支持的设备上都能正常工作。可能还需要根据实际需求对编译选项进行微调,比如开启或关闭某些特性。 在iOS开发中,正确编译和集成...

    二维码生成

    静态库需要分别针对模拟器(i386/x86_64)和真机(armv7/arm64)进行编译。在Xcode中,可以创建多个配置(如Debug-iOS和Release-iOS),然后分别构建生成对应架构的.a文件。最后,使用lipo工具将这些库合并为一个fat库...

    cargo-lipo, Cargo子命令自动为iOS创建通用库.zip

    cargo-lipo, Cargo子命令自动为iOS创建通用库 cargo lipo 为你的iOS应用程序自动创建一个 cargo lipo 子命令,它将自动创建一个通用库。用法你可以从任何地方运行 cargo,现在可以运行 cargo lipo 或者 cargo lipo -...

Global site tag (gtag.js) - Google Analytics