让你的iOS静态库支持armv7s

来源:互联网 发布:韩国女团 知乎 编辑:程序博客网 时间:2024/05/24 06:53

让你的iOS静态库支持armv7s

2013年01月07日 ⁄ 综合 ⁄ 共 819字 ⁄ 字号 小 中 大 ⁄ 评论关闭
<iframe id="cproIframe_u1788635_2" width="336" height="280" src="http://pos.baidu.com/acom?adn=3&amp;at=103&amp;aurl=&amp;cad=1&amp;ccd=24&amp;cec=UTF-8&amp;cfv=16&amp;ch=0&amp;col=zh-CN&amp;conOP=0&amp;cpa=1&amp;dai=2&amp;dis=0&amp;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&amp;ltu=http%3A%2F%2Fwww.xuebuyuan.com%2F1681952.html&amp;lunum=6&amp;n=83099053_cpr&amp;pcs=1280x606&amp;pis=10000x10000&amp;ps=326x866&amp;psr=1280x800&amp;pss=1280x346&amp;qn=5bcca5d528de3388&amp;rad=&amp;rsi0=336&amp;rsi1=280&amp;rsi5=4&amp;rss0=%23FFFFFF&amp;rss1=%23FFFFFF&amp;rss2=%230000ff&amp;rss3=%23444444&amp;rss4=%23008000&amp;rss5=&amp;rss6=%23e10900&amp;rss7=&amp;scale=&amp;skin=&amp;td_id=1788635&amp;tn=text_default_336_280&amp;tpr=1421133337413&amp;ts=1&amp;xuanting=0&amp;dtm=BAIDU_DUP2_SETJSONADSLOT&amp;dc=2&amp;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;"></iframe>


我们在用到第三方的静态库或者自己以前写的静态库时,在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