Archive 之 Undefined symbols for architecture armv7

本文围绕iOS开发展开,介绍了armv7等架构相关知识,阐述了制作支持多种架构静态库时真机与模拟器不通用的问题,记录了不同设备支持的架构,如模拟器32位用i386、64位用x86_64等,还提及编译设置及Archive阶段报错的解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

什么是 armv7?
 

 推荐 :iOS 中的 armv7,armv7s,arm64,i386,x86_64 都是什么

iOS开发~制作同时支持armv7,armv7s,arm64,i386,x86_64的静态库.a

在做静态库的时候以及引用静态库的时候经常会遇到一些关于真机模拟器不通用的情况,会报错找不到相应库导致编译失败,

这里简单记录一下各种设备支持的架构。

iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器,

模拟器32位处理器测试需要i386架构,(iphone5,iphone5s以下的模拟器)

模拟器64位处理器测试需要x86_64架构,(iphone6以上的模拟器)

真机32位处理器需要armv7,或者armv7s架构,(iphone4真机/armv7,      ipnone5,iphone5s真机/armv7s)

真机64位处理器需要arm64架构。(iphone6,iphone6p以上的真机)

project -> target -> building setting -> Arhitectures 设置

 

debug属性设置为no的时候,会编译支持所有架构的版本,编译的速度会变慢,设置为yes 的时候,只编译当前的architecture版本,编译速度快。

一般情况下,debug 设置为yes,release为no,这样发行版本能适应不同设备

编译成功 但是 Archive 阶段 报错(如果写完代码没有编译过,直接Archive ,当我啥也没有说),往往是用到的静态库打包时出现了了问题,这时我们通过以下指令来验证我们的想法
 

lipo -info XXXX.a 

事实证明我们是对的,这时只需要联系 静态库编辑者 添加编译armv7s 即可。

具体操作见

xcode编译生成.framework、.a静态库

 

至于我们在编译过程终于到的Xcode编译Undefined symbols for architecture xxx 错误 见下面这篇文章
Xcode编译Undefined symbols for architecture xxx 错误总结

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值