xcode 4 制作静态库(转)
~/Library目录在lion下是默认隐藏的。这样很不方便。用一下命令可以使其显示:
chflags nohidden ~/Library
如果想再让其隐藏,可以:
chflags hidden ~/Library
成功运动结果:(此处是自己封装自己的 demo代码)对官方的uitabbarcontroller进行自定义。
代码下载地址:
http://www.cocoachina.com/bbs/read.php?tid=75642&keyword=UITabBarController%D7%D4%B6%A8%D2%E5
任何转载必须注明出处:http://hi.baidu.com/yunhuaikong/blog/item/c47467f83ac77946242df2ee.html
我这个文档的静态库的开发是基于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文件。命令如下:
[如果你不会这个,那你就不要做ios开发啦!!!!!,这么明白,有的人还得非问这个是什么。1!!!!!! ]
将/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,这个通用库生成后,我们将原来,调用这个库进行替换一下,在进行编译,成功编译。
转载于:https://www.cnblogs.com/lovesmile/archive/2012/06/27/2565146.html
xcode 4 制作静态库(转)相关推荐
- xcode 4 制作静态库详解
最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Framework.在Xcode上没有找到允许编译,如同Android上的*.so和Win32上的dll这样的说法 ...
- xcode6制作静态库详解
开发IOS程序时我们使用的是Objective-c语言,Objective-c语言有.h .m 文件组成.静态库可以将 .m文件封装成一个.a文件,第三方应用程序只需要拿到这个.a文件和代码对应的.h ...
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
- VS2010,C++ 制作静态库(*.lib),并使用
VS2010,C++ 制作静态库(*.lib),并使用 原文链接:https://blog.csdn.net/qq_41472037/article/details/100001322 简单来说,就是 ...
- bazel 链接第三方动态库_如何自己制作静态库?
前言 在<一文带你了解静态库和动态库>一文中介绍了静态库的特点以及与动态库的区别.那么你有没有想过如何把自己写好的函数接口制作成静态库给别人用呢?本文教你如何制作属于自己的静态库. 编译成 ...
- xcode 制作静态库.a文件 详解
http://blog.csdn.net/kepoon/article/details/21516977 最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Fram ...
- (0054)iOS开发之制作静态库详解
最近在做Apple的IOS开发,有开发静态库的需求,下面就简单写一个静态库和一个调用静态库的例子. 静态库的编写: 1. 静态库工程的建立: Xcode New一个新的project,选择IOS下面的 ...
- 【转】IOS制作静态库
原文参见:http://blog.csdn.net/pjk1129/article/details/7255163 本身IOS的开发,只允许静态库或者Framework.在Xcode上没有找到允许编译 ...
- ios 重复引用 静态库_Swift 制作静态库
Github地址:https://github.com/LINGLemon/LXFSwiftApp Swift不支持.a的静态库,因此只能制作.framework的静态库 动态库和静态库的区别 库: ...
最新文章
- 2021年春季学期-信号与系统-第十一次作业参考答案-第三小题
- vecm模型怎么写系数_经典传染病的SIR模型(基于MATLAB)
- 问题分析探讨 -- 大约有700W数据的表,把当天的10W数据select导入新表,整个原来的表就锁死...
- buuoj-crypto 2
- 数据库概念 MySQL 库操作 表操作 记录操作
- [导入]ASP.NET MVC框架开发系列课程(2):一个简单的ASP.NET MVC应用程序.zip(13.70 MB)...
- CentOS 桌面启动无登录界面
- Android 屏幕适配攻略(六)设置通知样图标与启动图标适配
- 解题报告 Toy Bricks
- 遍历数据元素作为参数发送ajax jsonp请求
- 9 年前他用 1 万个比特币买两个披萨, 9 年后他把当年的代码卖给苹果, 成 GPU 挖矿之父...
- matlab maps 指北针和比例尺,R 地图绘制-比例尺与指北针
- Greenplum Python工具库gpload学习——gpload类
- 基于Docker的PaaS平台建设实践
- 网易云音乐推出异乡人年度企划:不同圈层音乐人演绎他乡故事
- 韩老师讲SQL2005数据库开发 环境准备代码
- Qt VTK软件开发问题学习记录
- 数据库练习题目(一)
- Nodejs (一)
- button标签定义type属性
热门文章
- java父类与子类的构造方法_java中的加载顺序以及父类与子类的构造方法 | 学步园...
- 中文短文本的实体识别实体链接,第一名解决方案
- Java应用怎么打包发布_myeclipse中java应用程序打包发布步骤
- C++中的接口继承和实现继承
- 等效全向辐射功率(EIRP)
- Algs4-1.2.8引用型变量赋值-数组复制
- leetcode 20. 有效的括号
- 通过HttpModule实现IP地址屏蔽功能
- 《计算机系统:核心概念及软硬件实现(原书第4版)》——1.4数据库系统
- 【H.264/AVC视频编解码技术详解】七、 熵编码算法(1):基础知识