博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xcode 4 制作静态库
阅读量:6039 次
发布时间:2019-06-20

本文共 2987 字,大约阅读时间需要 9 分钟。

 
查看文章
 
xcode 4 制作静态库
2012-02-08 11:29

 

 

~/Library目录在lion下是默认隐藏的。这样很不方便。用一下命令可以使其显示:

chflags nohidden ~/Library

如果想再让其隐藏,可以:

chflags hidden ~/Library

 成功运动结果:(此处是自己封装自己的 demo代码)对官方的uitabbarcontroller进行自定义。

代码下载地址:

      

  

 

我这个文档的静态库的开发是基于Xcode4.2和iOS SDK5.0编写的。Xcode4跟之前的Xcode3还是有不少的差别的。
下面就简单写一个静态库和一个调用静态库的例子。
静态库的编写:
1.静态库工程的建立:Xcode New一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static Library。直接next去建立一个UItab这样的工程。

2.工程建立了,我们就需要将我们的文件引入,删除这里自动自成的.h和.m文件,将我们自己的文件插入此项目中:如下

3.OK,编译,我们可以在Products下面找到我们编译生成的libstaticlib.a这个文件。

     注意未编译前为红色:左          编译后为黑色: 右

                

4.ok,在右边 这个文件上右键Open In Finder。这时候我们打开了一个文件夹,里面有一个libUItab.a。后面我们继续编写一个调用这个libUItab.a的App。但是这个App在编译时候会出错,通过这个错误的解决,说明Xcode的一些编译相关的东西。这里,我们在command下面根据路径找到这个文件,用这个非常重要的命令查看一下这个lib的信息!

打开终端写入如下命令:这是什么?这就是所在的路径 

以下均是在自己的mac上的路径。你需要将/Users/user/Library/Developer/Xcode/DerivedData/UItab-dbvoszbzpavyglaboxgflvrnzfce/Build/Products替换成你的路径。

cd /Users/user/Library/Developer/Xcode/DerivedData/UItab-dbvoszbzpavyglaboxgflvrnzfce/Build/Products  

我们手动打开这个路径:可以看到如下信息:Debug-iphoneos

这个是给真机用的,那我们要给模拟器和真机封装的静态库应该都能用才好。这个下面介绍!!!!!  

然后再在终端 打开这个文件:cd /Users/user/Library/Developer/Xcode/DerivedData/UItab-dbvoszbzpavyglaboxgflvrnzfce/Build/Products/Debug-iphoneos

命令是:lipo -info libUItab.a,可以看到显示的结果是:Arch是  Arm7。下面我会具体介绍一下。

5.建立一个调用这个libUITab.a的应用。应用就很简单了,我们添加刚才libUITab.a的*.h文件。 然后在这个工程的Build Phases的Link Binary With Library里面添加我们刚才拷贝出来的那个libUITab.a。

6.插入了h和a文件后,我们就可以在control里面调用这个libUITab.a 
函数了。

.m文件中使用

 

7.OK,编译运行这个应用程序。额。。。错误了。。这个就是这篇文档的关键了。主要就是为了介绍编译静态库相关的东西。
8.可以看到undefine symbols for architecture i386这样的错误。其实这个错误原因很简单,就是因为,我们用错了编译出来的
libUITab.a
 lib,在模拟器里面,我们需要的是基于i386构架编译的static lib,但是这个a文件,大家还记得前面说的arm6 arm7构架的么。这个a其实是在iphone这个arm构架上运行的代码。其实show in finder指向的是一个ios device的库,并不是i386模拟器下的库。那如何编译i386的库呢?看见第二张图片的UITab>IOS Device了么?我们将这个iOS Device修改成iPhone5.0 Simulator。在进行编译,这样就可以编译出i386下面的库。这个时候我们show in finder打开的文件夹还是ios device下的库。我们最好自己去那个目录下看一下。这里我们用command去查看了一下目录情况,如下:可以看到一个iphoneos的目录和一个simulator的目录。

然后我们再看看这个目录与第4条所示的目录有什么不同!!看到了吗?如果你看不到,那就是人品 问题。同样也有一个libUITab.a文件。

9.debug-iphoneos里面的是基于arm6 arm7编译出来的库文件。debug-iphonesimulator文件夹下面的是基于i386编译出来的文件。
10.
有二个库,这二个库一个是用于真机运行的一个是用于模拟器运行的.
其实我们可以利用lipo将这二个文件打包成一个通用的a文件。命令如下:

/Users/user/Library/Developer/Xcode/DerivedData/UITab-astuyxzptgvifbgmiuyszresdkrc/Build/Products替换成你的路径。 

/Users/user/Desktop/libUITab.a替换成合并后的路径。 

lipo -create "/Users/user/Library/Developer/Xcode/DerivedData/UITab-astuyxzptgvifbgmiuyszresdkrc/Build/Products/Debug-iphonesimulator/libUITab.a" "/Users/user/Library/Developer/Xcode/DerivedData/UITab-astuyxzptgvifbgmiuyszresdkrc/Build/Products/Debug-iphoneos/libUITab.a" -output "/Users/user/Desktop/libUITab.a

11.打包以后的库文件,我们查看信息,可以看到如下信息:在打此命令前,你必须先cd到对应的目录。此处的目录为“

cd /Users/user/Desktop

然后打入如下命令:

lipo -info libUITab.a

如上,你已经看到了,它具备了i386和arm7的条件。 现在我们这个静态库,支持的构架已经是armv7 i386了。

12.ok,这个通用库生成后,我们将原来,调用这个库进行替换一下,在进行编译,成功编译。


|浏览(
250) |  (
0)
 
上一篇:     
 
最近读者:
 
网友评论:
发表评论:
姓 名:      | 
网址或邮箱:  (选填)
内 容:
      
     
 |   |   | 
©2012 Baidu

转载地址:http://lkghx.baihongyu.com/

你可能感兴趣的文章
Ztree异步加载自动展开节点
查看>>
反射操作公共成员变量
查看>>
Android热修复升级探索——代码修复冷启动方案
查看>>
学校宿舍的深夜之思考
查看>>
编译安装nginx 1.9.15
查看>>
新的开始~~~
查看>>
字符串的扩展
查看>>
存储过程中调用webservice
查看>>
神奇语言 python 初识函数
查看>>
Windows安装Composer出现【Composer Security Warning】警告
查看>>
企业架构研究总结(22)——TOGAF架构开发方法(ADM)之信息系统架构阶段
查看>>
frameset分帧问题
查看>>
特殊样式:ime-mode禁汉字,tabindex焦点
查看>>
linux
查看>>
Layout父元素点击不到的解决办法
查看>>
【面试次体验】堆糖前端开发实习生
查看>>
C#+QQEmail自动发送邮件
查看>>
[Hadoop]MapReduce多输出
查看>>
Android Activity详解(一)
查看>>
我的友情链接
查看>>