Xcode5创建自己的静态库详解
首先声明: 本人屌丝一枚,如有不对不妥之处,请大牛指正!
1.静态库工程的建立:
Xcode New一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static Library。直接next去建立一个名为:MaxLib 的工程。
2.工程建立
添加简单的两个方法"- (void)max:(int)a :(int )b;"和"+ (void)print;"做示例 ;在*.m文件中的实现这两个方法 。这样编译出来的libMaxLib.a 就可以被其他的IOS小伙伴进行调用了。
方法的简单实现:
#import "MaxLib.h"
@implementation MaxLib
- (void)max:(int)a :(int)b
{
a > b ?(NSLog(@"Max is %d",a)) :(NSLog(@"Max is %d",b));
}
+ (void)print
{
NSLog(@"Hello");
}
@end
3.注意要编译两次
一次是选择真机编译;一次模拟器编译;注意设置版本如下所示;编译之后libMaxLib.a会变成黑色;
4.查看.a文件
libMaxLib.a 上右键show in finder 可以看到该文件;
返回上级目录可以看到右边目录下是模拟器用的 libMaxLib.a文件;
5,将真机和模拟器用的两个.a 合并成为一个通用的.a文件
在终端输入命令 : lipo -create /..... *.a /...../*.a -output /Users/..../*.a ;注意自己文件所在的路径
( 注意 可以使用命令 :lipo -info /..... *a 查看.a 所支持的架构 e.g. :
hezhujindeMacBook-Pro:~ hezhujin$ lipo -info /Users/hezhujin/Desktop/libMaxLib.a
Architectures in the fat file: /Users/hezhujin/Desktop/libMaxLib.a are: i386 armv7 armv7s arm64 )
6.最后我们来就可以简单使用自己创建的静态库了
新建工程,导入我们静态库工程的MaxLib.h 文件,然后在这个工程的Build Phases的Link Binary With Library里添加合并的 libMaxLib.a 文件;
简单代码示例
#import "HZJViewController.h"
#import "MaxLib.h"
@interface HZJViewController ()
@end
@implementation HZJViewController
- (void)viewDidLoad
{
[super viewDidLoad];
int a = 'A' ;
int b = 100 ;
[MaxLib print];
MaxLib * maxlib = [[MaxLib alloc]init];
[maxlib max:a :b ];
// Do any additional setup after loading the view, typically from a nib.
}
运行结果:
2014-06-22 21:26:37.136 TestView[2572:60b] Hello
2014-06-22 21:26:37.137 TestView[2572:60b] Max is 100
补充:要支持arm64 ,选择64位模拟器编译得到.a 在和之前的合并的.a 合并成新的.a 这样在64 位模拟器就可以运行了!!
Xcode5创建自己的静态库详解的更多相关文章
- xcode 4 制作静态库详解
合并.a文件,制作通用静态库 这二个库一个是用于真机运行的一个是用于模拟器运行的.其实我们可以利用lipo将这二个文件打包成一个通用的a文件.命令如下: 将/Users/user/Library/De ...
- Linux下Gcc生成和使用静态库和动态库详解(转)
一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...
- Linux下Gcc生成和使用静态库和动态库详解
参考文章:http://blog.chinaunix.net/uid-23592843-id-223539.html 一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库 ...
- Linux-Gcc生成和使用静态库和动态库详解
一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...
- 【转】 iOS 开发之静态库.a和动态库详解 -- 不错
原文网址:http://blog.csdn.net/lxl_815520/article/details/52154331 一, 简单介绍 1.什么是库 库是程序代码的集合,是共享程序代码的一种方式 ...
- 【转】Linux下gcc生成和使用静态库和动态库详解
一.基本概念 1.1 什么是库 在Windows平台和Linux平台下都大量存在着库. 本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不 ...
- iOS 静态库和动态库(库详解)
什么是库 ? 库就是程序代码的集合,将N个文件组织起来,是共享程序代码的一种方式.库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行. 库的分类 开源库:源代码是公开的,可以看到每个实现 ...
- C++静态库与动态库详解
1 库的概念? 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库. 2 动态库与静态库的概念? 先回顾一下编译过程: 2.1 静态库 静态库在链接阶段,会将汇编生成的目 ...
- MySQL5.6的4个自带库详解
MySQL5.6的4个自带库详解 1.information_schema详细介绍: information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数 ...
随机推荐
- cluster,network
How cluster works https://technet.microsoft.com/en-us/library/cc738051(v=ws.10).aspx http://blogs.te ...
- 开源app之MyHearts
前言 这个月,说实话,有忙有闲,经历了一次病痛的洗礼,才认识到了只有好好的生活,认真的对待自己的身体,才能更好的去工作,没有了身体的支撑,什么工作都只能是纸老虎,不攻自破.在这里也祝愿大家,在生活中好 ...
- System.Web.HttpContext.Current 跟踪分析
public static HttpContext Current { get { return ContextBase.Current as HttpContext; } set { Context ...
- Zookeeper工作原理二
ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.ZooKeeper的目标就是封装好复杂易出错的关键服务 ...
- Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 (主要是NSLayoutConstraint 的使用)
当前位置: > Swift新手入门 > Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 时间:2014-09-10 16:49来源:未知 作者:啊成 举报 点击:5 ...
- java file的一些方法
file包下的一些方法: File file = new File("d:\\", "tea.txt"); //文件名 ...
- 阿里云centos增加swap(虚拟内存)
我的阿里云服务器默认是没有配swap交换文件. 创建swap根目录 mkdir /swap 创建swap dd if=/dev/zero of=/swap/swap bs=1024 count=102 ...
- Android 服务端开发之开发环境配置
Android 服务端开发之开发环境配置 这里是在Eclipse的基础上安装PhpEclipse插件方法,PHPEclipse是Eclipse的 一个用于开发PHP的插件.当然也可以采用Java开发a ...
- WCF学习心得----(五)生成客户端
WCF学习心得----(五)生成客户端 1. 通过Svcutil.exe工具直接生成客户端 1.1 将服务承载于IIS上 1.1.1 在IIS中新建网站,所示效果如下图: 1.1.2 ...
- OpenSSL库验证PKCS7签名
使用Crypto库签名和验证签名请参考Crypto库实现PKCS7签名与签名验证,可以使用OpenSSL库验证Crypto签名,OpenSSL验证签名可使用简单的代码描述如下: //signature ...