文件中缺少所需的架构armv7?

27

我一直收到这个警告,还有错误,有人能帮忙吗?

    ld: warning: ignoring file /Applications/Xcode.app/Contents/Developer/Platforms       /iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks//SystemConfiguration.framework/SystemConfiguration, missing required architecture armv7 in file
    Undefined symbols for architecture armv7:
    "_SCNetworkReachabilityCreateWithAddress", referenced from:
  +[Reachability reachabilityWithAddress:] in Reachability.o
   "_SCNetworkReachabilityCreateWithName", referenced from:
  +[Reachability reachabilityWithHostName:] in Reachability.o
   "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
  -[Reachability stopNotifier] in Reachability.o
   "_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
  -[Reachability startNotifier] in Reachability.o
   "_SCNetworkReachabilitySetCallback", referenced from:
  -[Reachability startNotifier] in Reachability.o
   "_SCNetworkReachabilityGetFlags", referenced from:
  -[Reachability connectionRequired] in Reachability.o
  -[Reachability currentReachabilityStatus] in Reachability.o
   ld: symbol(s) not found for architecture armv7
   clang: error: linker command failed with exit code 1 (use -v to see invocation)

我的应用在模拟器中工作良好,但是当我构建到手机上时就出问题了。

7个回答

67
您需要链接SystemConfiguration框架。在Xcode的项目导航器中选择您的项目,选择您的应用目标,然后选择“Build Phases”选项卡。在“Link Binary With Libraries”下,点击“+”按钮并选择SystemConfiguration.framework。
可能还有其他框架依赖项需要以同样的方式添加,但添加SystemConfiguration是为我解决相同错误的方法。
预计完成时间(ETA):我直接跳到了错误处,并没有看到粘贴顶部的ld警告。如果您已经链接到SystemConfiguration,请尝试删除并重新添加它,如果一切都失败了,请更新Xcode。最近的版本肯定有正确的架构,所以我认为要么您的项目正在寻找错误的位置,要么框架本身出了问题。

你,我的朋友,太棒了。这只花了30秒钟就立刻为我解决了问题。谢谢。 - Jon K
谢谢!你刚刚救了我,否则我可能会度过漫长的下午 :) - hover
也适用于我。我认为这是正确的答案。 - John Ballinger
刚意识到我从未将这个答案接受为正确答案。 - Popeye
1
叹气。现在是2016年了。为什么Xcode不能帮助我们解决这样的问题,而只是输出模糊的错误信息?!我昨天注意到,apple.com/feedback网站可以让你对所有苹果硬件和软件提供反馈,除了Xcode。很有趣...无论如何,谢谢 - 这完美地解决了我的问题!! - Mike Gledhill
@Siobhan,你提供的解决方案真的非常棒,我会给10+的好评。它真正地将我的项目从无法编译变成了可编译的。Xcode - Trevor

10
当我引入一个使用Carthage构建的框架时,它的部署目标被设置为iOS 11,但我正在构建iOS 9。因此,32位架构(armv7、i386)丢失了。我已将该框架的部署目标更改为iOS 9,问题得到解决。

谢谢,这帮了我很多!我也遇到了同样的问题。 - Maail

4
这个问题涉及到XCode在尝试重用旧文件以缩短构建时间时,可能会混淆调试、配置文件和最终发布文件,从而导致架构丢失(可能与之前使用的相反)。这是因为XCode尝试重用为单一架构构建的某些先前的文件。
在XCode中清理您的项目(⇧ + ⌘ + K),并尝试清理所有其他第三方库。之后,在所需的发布模式下直接重新构建您的应用程序。这100%的情况下可以解决,而无需重新启动XCode。
XCode很烂,我还能说什么呢?

这对我解决了问题,谢谢! - auspicious99

1
请确保添加了构建应用所需的所有库。这个错误看起来像是你漏掉了一些文件...

0
在您的项目中添加army(路径 => 项目标题(选择Xcode蓝色拒绝标题) -> 构建设置 -> ARCHS),如果您没有armv7,则在此ARCHS中添加它... 希望这能帮到您。

0

我在使用Twilio Chat客户端框架时遇到了相同的问题。当我进入carthage文件夹并打开Twilio Chat客户端框架的Info.plist文件时,我发现最低的部署目标被设置为11.0,但是我正在开发适用于10.0的应用程序,因此缺少这些体系结构。

如何解决:我将我的Twilio Chat客户端框架降级到较早的版本,其中部署目标设置为9.0,然后它就可以正常工作了。


-1

前往项目图标-> 目标 -> 构建设置 -> 架构

点击 -> 其他+ 并在指定列中添加armv6...

清理并构建


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接