ios 静态库使用方法

在使用c++相关代码时,可以直接将.h和 .cpp文件加入到创建静态库的工程项目中,编辑通过后会成.a文件。 (创建静态库工程 略)

编译成功后,在项目中生成的.a文件上右键 show in finder 即可打开.a文件目录,其中有两个目录,一个是选择ios device 时生成的.a文件,一个是选择模拟器编译时生成的.a文件,分别对应在真机设备和模拟器中使用。

为了方便使用,可以将模拟器和真机生成的两个文件进行合并, 合并步骤:

实用工具中打开 终端  ; cd Desktop 找到桌面目录; cd ss 进入ss目录,开始合并文件:

lipo -create libmapnavi-device.a libmapnavi-simila.a -output mapnavi.a  生成一个在模拟器和真机均可实用的文件.

lipo -info mapnavi.a 查看文件支持的情况.


另外,在编译静态库时选择 Valid Architectures  armv7 armv7s .

armv7是支持比iphone5旧的那些设备,armv7s是iphone5或ipad4或者以后的新设备,i386是mac的。
这些名字指的是处理器所用的指令集。
因此常常发生的是.a文件要么ipad mini可以Build成功,但iphone5不能Build成功。要么就相反,让人抓狂。
解决办法就是上面做的全面支持各指令集的.a文件方法。
前提是分别生成3个支持对应指令集的.a文件。在Build静态库时,设备分别选择不同的真机以及模拟器,分别Build出来,备份到一个文件夹,并且取不同的名字。
此时可以用命令来检查导出的.a文件所支持的指令集,lipo -info XXX.a ,要保证3个都是不同的才能进行下一步 ,注意:armv7s的显示名是cputype (12) cpusubtype (11)
然后以命令 lipo -create XXXX_V7.a XXXX_V7s.a -output XXXX_all.a 合成他们成为新的.a文件。
最后替换掉报错的.a文件即可。

lipo到底是什么呢

lipo源于mac系统要制作兼容powerpc平台和intel平台的程序。

lipo 是一个在 Mac OS X 中处理通用程序(Universal Binaries)的工具。现在发售或者提供下载的许多(几乎所有)程序都打上了“Universal”标志,意味着它们同时具有 PowerPC  Intel 芯片能够处理的代码。不过既然你可能不在意其中的一个,你就能够使用 lipo 来给你的程序瘦身。比如你想让便笺应用程序只包含 Inteli386)的代码:

cd /Applications

lipo Stickies.app/Contents/MacOS/Stickies -thin i386 -output Stickies.app/Contents/MacOS/Stickies.i386

cd Stickies.app/Contents/MacOS/

rm Stickies

mv Stickies.i386 Stickies


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值