静态库工程创建ios
打开xcode --> 新建工程 --> 选择工程类型为library --> 肯定
xcode
2.工程配置 架构
点击工程中-->ios device(选择edit scheme) --> 点击info --> run (选择release 或者debug)--> ok
iphone
target --> building setting --> archciture active only 设置为no
ui
编译运行--> xcode 的product 中点击菜单--> show in finder 找到编译的静态库。
spa
3. 注意事项.net
静态库通常分为模拟器和真机两种
debug
模拟器是i386架构,真机是你当前打包时候使用的手机的架构
code
iPhone 手机cpu 架构类型
orm
armv6 :iphone iphone2 iphone3G
armv7 :iphone3Gs iphone4 iphone4s
armv7s :iphone5 iphone5c
arm64 :iphone5s iphone6 iphone6p iphone6s iphone6sp
4.查看lib库的信息
命令是:lipo -info libPrint.a,能够看到显示的结果是:Arch是 Arm7。下面我会具体介绍一下。
5.有时候能够看到undefine symbols for architecture i386这样的错误。
其实这个错误缘由很简单,就是由于,咱们用错了编译出来的xxx.a lib;在模拟器里面,咱们须要的是基于i386构架编译的static lib,可是这个a文件,你们还记得前面说的arm6 arm7构架的么。这个a实际上是在iphone这个arm构架上运行的代码。其实show in finder指向的是一个ios device的库,并非i386模拟器下的库。那如何编译i386的库呢?咱们将这个iOS Device修改为iPhone5.0 Simulator。在进行编译,这样就能够编译出i386下面的库。这个时候咱们show in finder打开的文件夹仍是ios device下的库。咱们最好本身去那个目录下看一下。这里咱们用command去查看了一下目录状况,以下:能够看到一个iphoneos的目录和一个simulator的目录。
而后咱们再看看这个目录与第4条所示的目录有什么不一样! 一样也有一个libPrint.a文件。
6.lib 错误缘由,
Release-iphoneos里面的是基于arm6 arm7编译出来的库文件。Release-iphonesimulator文件夹下面的是基于i386编译出来的文件。
7.合并.a文件,制做通用静态库
这二个库一个是用于真机运行的一个是用于模拟器运行的.其实咱们能够利用lipo将这二个文件打包成一个通用的a文件。命令以下:
将/Users/user/Library/Developer/Xcode/DerivedData/UITab-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products替换成你的路径。
将/Users/user/Desktop/xxx.a替换成合并后的路径。
lipo -create path1/真机/xxxt.a path2/模拟器/xxx.a -output /Users/pjk1129/Desktop/xxx.a
连接:http://blog.csdn.net/kepoon/article/details/21516977