我可以构建 Armv7 + Arm64 架构,但不能单独构建 Armv7
Posted
技术标签:
【中文标题】我可以构建 Armv7 + Arm64 架构,但不能单独构建 Armv7【英文标题】:I can build Armv7 + Arm64 architecture but not Armv7 alone 【发布时间】:2015-02-08 15:24:47 【问题描述】:使用 Armv7 + Arm64 架构构建统一的 API 应用程序(迁移后)工作正常,该应用程序在 iPhone 5 和 iPhone 6 上运行良好。但由于架构不兼容,无法在 iPhone 4S 上运行。
尝试仅使用 Armv7 架构构建它失败了。 这些是我得到的错误:
错误 MT5210:本机链接失败,未定义符号:_res_9_init。请确认所有必要的框架都已被引用,并且本地库已正确链接。(MT5210)
错误 MT5210:本机链接失败,未定义符号:_xmlDocGetRootElement。请确认所有必要的框架都已被引用,并且本地库已正确链接。(MT5210)
还有 6 个这样的... 如何仅在 Armv7 上编译?
【问题讨论】:
请将 '-v -v -v -v' 添加到项目的 ios 构建选项中的附加 mtouch 参数中,并粘贴好和坏的构建日志。 rumblephonebook.azurewebsites.net/goodBuild.txt rumblephonebook.azurewebsites.net/badBuild.txt 似乎是 Oyala 绑定中的问题。但是为什么Armv7+Arm64可以,Armv7不行呢? 【参考方案1】:解决办法: 由于 Oyala 绑定 linkWith 文件中缺少链接标志,Armv7 构建失败。 修复标志(LinkerFlags="-lstdc++ -lz -lxml2 -lresolv")后,Armv7 构建完成,没有错误。
它仍然没有解释为什么 Armv7+Arm64(胖版本)没有失败。 它只是跳过了 Oyala 构建。 这可能是一个 Xamarin 错误。
【讨论】:
【参考方案2】:这看起来像是 Xamarin.iOS 中的一个错误,它不包括胖 (armv7+arm64) 构建中的某些库,而那些(有问题的)库会导致仅 armv7 构建中的问题。
也就是说,我相信通过将-gcc_flags -lxml
添加到项目的 iOS 构建选项中的其他 mtouch 参数中,构建问题将得到解决。
此外,我建议提交一个错误 (http://bugzilla.xamarin.com),以了解胖与瘦构建的差异。
【讨论】:
非常感谢。我会这样做并为您提供有关标志解决方案的最新信息。 添加 -gcc_flags -lxml 后,我得到:错误 MT5309:本机链接错误:找不到 -lxml (MT5309) (Rumble.Touch) 的库 错误 MT5201:本机链接失败。请查看构建日志和提供给 gcc 的用户标志:-lxml (MT5201) (Rumble.Touch) 错误 MT5202:本机链接失败。请查看构建日志。 (MT5202) (Rumble.Touch)以上是关于我可以构建 Armv7 + Arm64 架构,但不能单独构建 Armv7的主要内容,如果未能解决你的问题,请参考以下文章
Xcode Swift文件是为arm64构建的,它不是被链接的架构(armv7)
docker如何构建多架构(arm64, x86_64, armv7)容器镜像?
为 armv7、armv7s、arm64、i386 和通用构建 ffmpeg iOS 库