转自 http://blog.csdn.net/jinglijun/article/details/8276089
通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac和iPhone的CPU不同,才造成了这种情况。
为了模拟器与真机之间切换调试的方便,制作通用版本非常有必要。
现在有两个版本的静态库libSQLite_i386.a(模拟器)与libSQLite_arm.a(真机)。
1、打开终端,进入到这两个文件所在的目录;
2、执行:lipo -create libSQLite_i386.a libSQLite_arm.a -output libSQLite.a,这时文件就会多出libSQLite.a,这个文件即为通用静态库。
我们可以lipo -info libSQLite.a命令,查看是否是通用的。
可以发现libSQLite.a的大小为libSQLite_i386.a与libSQLite_arm.a之和,建议发布的时候将静态库替换成真机版。
那lipo到底是什么呢
lipo源于mac系统要制作兼容powerpc平台和intel平台的程序。
lipo 是一个在 Mac OS X中处理通用程序(Universal Binaries)的工具。现在发售或者提供下载的许多(几乎所有)程序都打上了“Universal”标志,意味着它们同时具有
PowerPC和 Intel 芯片能够处理的代码。不过既然你可能不在意其中的一个,你就能够使用 lipo来给你的程序“瘦身”。比如你想让“便笺”应用程序只包含
Intel(i386)的代码:
cd /Applications
lipo Stickies.app/Contents/MacOS/Stickies -thin i386 -output Stickies.app/Contents/MacOS/Stickies.i386
cd Stickies.app/Contents/MacOS/
rm Stickies
mv Stickies.i386 Stickies