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自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数 ...
随机推荐
- Linux-Memcache分布式部署方案(magent代理解决单点故障)
Memcached的特点 Memcached作为高速运行的分布式缓存服务器具有以下特点. 1. 协议简单:memcached的服务器客户端通信并不使用复杂的MXL等格式, 而是使用简单的基于文本的协议 ...
- Python合并两个numpy矩阵
numpy是Python用来科学计算的一个非常重要的库,numpy主要用来处理一些矩阵对象,可以说numpy让Python有了Matlab的味道. 实际的应用中,矩阵的合并是一个经常发生的操作,如何利 ...
- Web前端开发笔试&面试_05_other 2016104399MS
1.数据传送的方式,get post 的区别是? 2.你要怎么绑定页码(比如给你第三页,)? 3.数据流是如何实现,用for 循环? 4.轮播怎么实现?用原生JS实现. 5.布局,B是固定宽度,A的内 ...
- unity, eulerAngle
unity中欧拉角规定如下: A rotation that rotates euler.z degrees around the z axis, euler.x degrees around the ...
- xml学习笔记二(规则)
XML 的语法规则很简单,且很有逻辑.这些规则很容易学习,也很容易使用. 所有 XML 元素都须有关闭标签 在 HTML,经常会看到没有关闭标签的元素: <p>This is a para ...
- LINUX常用配置及命令
一. Fedora系统配置 1. [设置网卡IP] 步骤如下: 1) 用root用户登陆,打开/etc/sysconfig/network-scripts/ifcfg-eth0文 ...
- mysql批量更新
UPDATE ta INNER JOIN tb ON ta.id=tb.id SET ta.col1=tb.col1, ta.col2=tb.col2 以上代码用来批量更新mysql中的记录
- [转]Hibernate Session各种状态转换方法分析
摘自http://spiritfrog.iteye.com/blog/221177 我的印象里, Hibernate session中常用的保存操作只有:save, update, saveOrUpd ...
- [转] Neutron FWaaS
OpenStack Neutron FWaaS 学习 ( by quqi99 ) 作者:张华 发表于:2013-06-24 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息 ...
- 批处理安装APK
set adbpa=D:\Nexus6\ota51\ADBTool set apkpa=D:\WDJDownload\Apps %adbpa%\adb.exe install %apkpa%\CPU- ...