让你的iOS静态库支持armv7s


我们在用到第三方的静态库或者自己以前写的静态库时,在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这个静态库发布出去或者给第三方用就没问题了。



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值