让你的iOS静态库支持armv7s

让你的iOS静态库支持armv7s

2013年01月07日  ⁄ 综合 ⁄ 共 819字 ⁄ 字号  小 中 大  ⁄ 评论关闭
id="cproIframe_u1788635_2" width="336" height="280" src="http://pos.baidu.com/acom?adn=3&at=103&aurl=&cad=1&ccd=24&cec=UTF-8&cfv=16&ch=0&col=zh-CN&conOP=0&cpa=1&dai=2&dis=0&ltr=http%3A%2F%2Fwww.baidu.com%2Fs%3Fie%3Dutf-8%26f%3D8%26rsv_bp%3D1%26rsv_idx%3D1%26tn%3Dbaidu%26wd%3D%25E5%25A6%2582%25E4%25BD%2595%25E6%259F%25A5%25E7%259C%258Bios%2520%25E9%259D%2599%25E6%2580%2581%25E5%25BA%2593%25E6%2594%25AF%25E6%258C%2581%25E7%259A%2584%25E7%2589%2588%25E6%259C%25AC%26rsv_pq%3Df2e3b11e00001271%26rsv_t%3D4cddLIYMSd3%252FsRMwKSDbglPBnqBSrMjgwen0HTAxD2SptSFcrVwAd2dX%252BxU%26rsv_enter%3D1%26rsv_sug3%3D56%26rsv_sug4%3D1423%26rsv_sug1%3D20%26sug%3D%25E5%25A6%2582%25E4%25BD%2595%25E6%259F%25A5%25E7%259C%258B%25E6%259C%25AC%25E6%259C%25BAip%26oq%3D%25E5%25A6%2582%25E4%25BD%2595chakan%26rsv_n%3D1%26rsv_sug2%3D0%26inputT%3D22911&ltu=http%3A%2F%2Fwww.xuebuyuan.com%2F1681952.html&lunum=6&n=83099053_cpr&pcs=1280x606&pis=10000x10000&ps=326x866&psr=1280x800&pss=1280x346&qn=5bcca5d528de3388&rad=&rsi0=336&rsi1=280&rsi5=4&rss0=%23FFFFFF&rss1=%23FFFFFF&rss2=%230000ff&rss3=%23444444&rss4=%23008000&rss5=&rss6=%23e10900&rss7=&scale=&skin=&td_id=1788635&tn=text_default_336_280&tpr=1421133337413&ts=1&xuanting=0&dtm=BAIDU_DUP2_SETJSONADSLOT&dc=2&di=u1788635" align="center,center" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="margin: 0px; padding: 0px; border-width: 0px; background: transparent;">


我们在用到第三方的静态库或者自己以前写的静态库时,在iPhone5,ipad4 上面经常会报错,下面

ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /zhangyg/XXX/XXX/libs/libxxx.a for architecture armv7sclang: error: linker command failed with exit code 1 (use -v to see invocation)


这个解决方法有几种,有山寨的,有专业的。

 


山寨的就是在你引用静态库的工程设置里面(上图)设置下不要添加armv7s,这个方法是治标不治本,所以建议不要使用。


我们还是彻底来解决他吧。

下面就是具体方法:

 我们新建的静态库工程,设置为

然后这样我们bulid一次,生成的xxx.a文件我们用命令看一下是:

用命令查看下:lipo -info xxxx.a

 

这样只有armv7,在新的apple  设备上肯定会报错,不支持armv7s。

那我们简单的,做一个设置,也是最重要的设置就是Build Active Architecture Only的值设置为NO


这样我们继续在bulid一次,然后在看一下

lipo -info xxxx.a


这样就多了一个 (cputype (12)  cpusubtype(11) ),看见这个你可能还很纳闷,为什么还没有armv7s,其实这里的 (cputype
(12)  cpusubtype(11) )就是armv7s。

这样我们在选择模拟器bulid一次。

lipo -info  xxxx.a


这次目标结构变为了 :i386,ok了。

然后我们用命令合一下这二个静态库 就ok了

 lipo -create 模拟器.a  真机.a -output 目标地址/最终.a

我们可以查看下:lipo -info  最终.a


这样就包含了模拟器和真机都可以运行的静态库了。

然后最终.a这个静态库发布出去或者给第三方用就没问题了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值