为了账号安全,请及时绑定邮箱和手机立即绑定

Xcode 5.1中的Arm64体系结构

Xcode 5.1中的Arm64体系结构

iOS
手掌心 2019-11-12 14:56:35
在新的XCode 5.1中,arm64已成为要构建的标准体系结构之一。但是,在我当前的项目中,我包括了尚不支持这种新架构的库(例如Google AdMob)-这些库现在导致链接器错误:ld: symbol(s) not found for architecture arm64例如,据说 Google AdMob 6.8.0 支持arm64,但我不能真正确认这一点,除非cputype (16777228) cpusubtype (0)是arm64?(通过文件命令行工具找到)libGoogleAdMobAds.a: Mach-O universal binary with 5 architectureslibGoogleAdMobAds.a (for architecture armv7):   current ar archive random librarylibGoogleAdMobAds.a (for architecture armv7s):  current ar archive random librarylibGoogleAdMobAds.a (for architecture i386):    current ar archive random librarylibGoogleAdMobAds.a (for architecture x86_64):  current ar archive random librarylibGoogleAdMobAds.a (for architecture cputype (16777228) cpusubtype (0)):   current ar archive random library有办法解决吗?
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

暂时摆脱arm64并不难。您需要做的只是:


编辑目标的 “ 构建设置”。Architectures通过打开下拉菜单来更改其值,单击“ 其他...”,然后选择它,删除带有值的行,$(ARCHS_STANDARD)并添加两个带有值的行:armv7和armv7s(或$(ARCHS_STANDARD_32_BIT)如 nschum所述),关闭弹出窗口。


编辑该值,Valid Architectures然后删除其中的arm64一部分。


对您在工作区或项目中可能存在的每个嵌套项目执行此操作。


注意:这不是解决方案,仅是减轻当前问题的几步,请继续关注您的依赖项目,以了解它们具有arm64兼容性的情况,并尽快恢复这些设置的更改。



查看完整回答
反对 回复 2019-11-12
?
慕斯709654

TA贡献1840条经验 获得超5个赞

从Xcode 5.1开始,$(ARCHS_STANDARD)现在包括arm64(以及armv7和armv7s),而在Xcode 5.02中,$(ARCHS_STANDARD)仅包括armv7和armv7s。

对于Xcode 5.1

$(ARCHS_STANDARD)= armv7 armv7s arm64

$(ARCHS_STANDARD_32_BIT)= armv7 armv7s

因此,如果必须以64位进行编译,则需要确保所有包含的库都具有64位分片。如果他们还不支持64位,那么您将不得不使用32位进行编译。

但无论哪种情况,在目标构建设置下,都需要确保将架构和有效架构设置为相同且匹配(请参见下图)。因此,您可以使用$(ARCHS_STANDARD)尝试它们,如果不能编译,则可以使用$(ARCHS_STANDARD_32_BIT)尝试它们,从理论上讲,它们将消除错误并编译一个正在运行的项目。

--

对于具有arm64 armv7s和armv7的64位,如下所示:

//img1.sycdn.imooc.com//5dca57d3000136c308250324.jpg

或对于仅带armv7s和armv7的32位(不带arm64),如下所示:

//img1.sycdn.imooc.com//5dca57de0001583908130324.jpg


查看完整回答
反对 回复 2019-11-12
  • 3 回答
  • 0 关注
  • 645 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信