如何编译静态类库,大家已经比较熟悉了,而且现在网上也有很多教程,就不多罗唆了. 现在问题是, 我们编译好了会是两个版本的.a文件 分别用于模拟器和iPhone真机, 因为Mac和iPhone的CPU不同, 才造成了这样的情况. 有点像 PowerMac 和 InterMac.
在使用静态类库的时候, 我们如果想在模拟器调试, 就必须把用于模拟器版本的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
分享到:
相关推荐
在iOS开发中,通常需要分别编译针对模拟器和真机的二进制文件,因为它们的架构不同。模拟器使用i386或x86_64架构,而真机则有armv7、armv7s、arm64等多种架构。为了创建通用版的IJKMediaFramework,我们需要进行以下...
在iOS开发过程中,我们通常需要在模拟器和真机上进行测试。这两个环境使用的架构不同,模拟器使用i386和x86_64架构,而真机则使用armv7、armv7s、arm64等。libzbar.a是ZBarSDK的静态链接库,为了在两种环境下都能...
在本案例中,`libmp3lame.a`是已经编译好的静态库,包含了arm64、armv7和i386架构的支持,这意味着它可以用于运行在不同架构的设备上,包括iPhone真机(arm64和armv7)和iOS模拟器(i386)。 **手动集成步骤** 1. *...
3. **支持模拟器和真机**:分别编译针对模拟器和真机的静态库,然后使用`lipo`命令将它们合并成一个兼容两种环境的库文件。 打包流程如下: 1. **编译模拟器库**:使用`xcodebuild`命令,指定项目文件、构建方案、...
最近升级了系统到Mac OS X 10.10 并且更新了XCode6.1和iOS 8.1之前app用到的libmp3lame.a静态库,也要支持64位的模拟器(x86_64)和64位的真机(arm64)指令集。需要重新编译查阅了下资料,按照如下步骤,并做了些注释...
第二步:分别在模拟器和真机下编译IJKMediaPlayer,并找到模拟器和真机对应的IJKMediaFramework.framework。 如下所示: 第三步:合成模拟器和真机下的framework,这样才可以在真机和模拟器下同时使用。我这里是将...
5. **合并模拟器和真机的库**:与.a静态库一样,也需要使用`lipo`命令来合并模拟器和真机的库。 #### 总结 本文介绍了如何在Xcode中创建和管理静态库和动态库。通过详细步骤指导,你可以轻松地创建出符合自己需求...
3. **编译**:根据目标设备(iOS设备或模拟器),分别编译两次,生成arm架构(适用于真机)和i386架构(适用于模拟器)的.a文件。这些文件通常位于`DerivedData`目录下。 4. **合并.a文件**:使用`lipo`命令将两个....
百度地图SDK提供了模拟器和真机两中环境所使用的静态库文件,libbaidumapapi.a合并这了这两个静态库。使用lipo命令将设备和模拟器的.a合并成一个通用的.a文件。 iOS SDK v2.6.0版本的静态库
9. **编译配置**:为了适配真机和模拟器,开发者通常需要进行不同架构的编译,通过`lipo`命令将不同架构的二进制文件合并为一个fat binary。 10. **API接口**:ijkPlayer提供了清晰的API接口,方便开发者集成到自己...
5. **合并模拟器和真机的静态库** 如果你需要同时支持模拟器和真机,你需要将两者生成的.a文件合并。打开终端,使用`lipo`命令来完成这个操作。例如: ```bash lipo -create /path/to/debug_version.a /path/to/...
这意味着这个静态库不仅适用于iPhone真机设备,也适用于iOS模拟器。不同的iOS设备可能使用不同的处理器架构(如ARMv7, ARM64, i386, x86_64),`libmp3lame.a`已经包含了所有这些架构的代码,所以可以在各种设备上...
发现真机可以运行了,但模拟器运行不了,如是经过多番折腾,终于对最新的pjsip2.4进行了全平台支持的静态库编译成功,发布出来供大家使用 。 使用方法:解压后替换相应的库文件即可。注意如果之前pjsip是2.0的,...
- 由于armv7和armv7s的静态库是分开的,我们需要创建一个通用静态库(Universal Library)以兼容不同的设备。使用lipo命令进行合并:`lipo -create build/lib/libavcodec.a build/armv7s-ios/libavcodec.a -output ...
首先,分别在真机和模拟器环境下编译项目,然后使用`lipo`命令将两个`.a`文件合并为一个通用静态库。这一步骤很重要,因为iOS应用可能需要在多种设备上运行。 创建完静态库后,我们可以开始编写一个使用该库的应用...
7. **测试和优化**:编译完成后,记得在模拟器和真机上进行测试,确保OpenSSL在所有支持的设备上都能正常工作。可能还需要根据实际需求对编译选项进行微调,比如开启或关闭某些特性。 在iOS开发中,正确编译和集成...
静态库需要分别针对模拟器(i386/x86_64)和真机(armv7/arm64)进行编译。在Xcode中,可以创建多个配置(如Debug-iOS和Release-iOS),然后分别构建生成对应架构的.a文件。最后,使用lipo工具将这些库合并为一个fat库...
cargo-lipo, Cargo子命令自动为iOS创建通用库 cargo lipo 为你的iOS应用程序自动创建一个 cargo lipo 子命令,它将自动创建一个通用库。用法你可以从任何地方运行 cargo,现在可以运行 cargo lipo 或者 cargo lipo -...