Xcode 8.0 更新后架构 arm64 的重复符号

Posted

技术标签:

【中文标题】Xcode 8.0 更新后架构 arm64 的重复符号【英文标题】:duplicate symbols for architecture arm64 after Xcode 8.0 update 【发布时间】:2017-01-23 13:56:45 【问题描述】:

更新Xcode 后出现重复符号错误。 (找到代码)有人也得到这个吗?又该如何解决?

我试图从“Other Linker Flags”部分删除-ObjC链接器标志,在导入.m而不是.h后检查,将“No Common Blocks”编译器设置切换为NO,我去了@987654325 @sources,没有重复,尝试了所有都没有结果。

还有其他想法吗?

重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/FollowingUserViewController.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/ChatViewController.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/MessagesNotifications.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/AppDelegate.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/PicturesCell.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SMAPMainViewController.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/CheckUserTypeViewController.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SmaptersNearYou.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/PostSlider.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/UserSettings.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/EventSliderCell.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/UserProfile.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/EventCell.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/NewsFeed.o 重复符号 _textViewMaxHeight 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/EventSliderCell.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/ExpressSliderCell.o 重复符号 _textViewStandardHeight 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/EventSliderCell.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/ExpressSliderCell.o 重复符号_textViewStep in: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/EventSliderCell.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/ExpressSliderCell.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/FollowerUserViewController.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/FilterAlertView.o 重复符号 _space 在: /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/SearchView.o /Users/a/Library/Developer/Xcode/DerivedData/SMAP-bshetjpaaresiudzvoubtutnfvuq/Build/Intermediates/SMAP.build/Debug-iphoneos/SMAP.build/Objects-normal/arm64/UserNotificationsViewController.o ld:架构 arm64 的 20 个重复符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

【问题讨论】:

您尝试清理和删除派生数据? 刚刚做了,错误依然存在:( 检查您是否没有在某处#imported .m 文件,它很可能是 SearchView。刚刚打扰了我一个多小时@! 【参考方案1】:

下面的补丁对我有用..:)

代码建议使用警告标志并将 GCC_NO_COMMON_BLOCKS 设置为 YES。

将其设置回 NO 解决了问题!

【讨论】:

@pi1000,很高兴听到你的声音..:) 太棒了!有效! 完美。你是一个救生员。 我不得不同时更改 Enable Testability 和 No Common Blocks 设置。 或者只是更正代码,对我来说,在 const 声明中添加 extern【参考方案2】:

我终于找到了!您可以在 Build settings 中将 enable testability 设置为 NO 后进行编译。

来自The Xcode 8 Release Notes:

启用 Enable Testability 构建设置后,Xcode 8 会将 -export_dynamic 传递给链接器以保留所有全局符号以进行测试。这有效地覆盖了死代码剥离,这可能会暴露引用未定义符号的未使用函数的链接故障。如有必要,禁用可测试性将允许链接在不更改源的情况下继续进行。 (27684883)

当然,最好的做法是:a) 删除导致链接器问题的未使用代码,或 b) 实际修复链接器问题。

【讨论】:

谢谢,这解决了我的问题,而不是其他将 GCC_NO_COMMON_BLOCKS 设置为 NO 的建议解决方案。 @Ivan Nice,很高兴能帮上忙! 我不得不同时更改 Enable Testability 和 No Common Blocks 设置。【参考方案3】:

我知道大多数人通过 No Common Blocks 或 Dead Code 设置来解决这个问题,但这实际上是解决实际问题的一种解决方法。就我而言,我使用的 Pod 文件添加了我已经链接的相同库,所以基本上我删除了我的 Build Phases 链接库中已经在我的 Pod 文件中编译的重复文件,并且存档功能有效。

【讨论】:

这应该是选择的答案。我已经有这个问题一周了,我已经看到了很多技巧,这就是为了解决这个问题,但你的回答实际上让我理解了这个问题,所以我可以立即解决它。非常感谢,谢谢!【参考方案4】:

我发现我在 .m 文件中的每个 2 个不同的类中声明了常量。这在这个新版本的 xCode 之前是允许的,但现在看起来像重复,即使这 2 个类不相互导入并且彼此没有任何关系。

const NSInteger 空间 = 10;

【讨论】:

【参考方案5】:

对于我的情况,Xcode 9,我们在一些头文件中声明了常量

Constants.h

static NSString *const kSomeString = @"SomeString";

所以在多个 .m 文件中导入 Constants.h 会导致符号重复

解决方案:

Constants.h

extern NSString * const kSomeString;

Constants.m

NSString *const kSomeString = @"SomeString";

【讨论】:

【参考方案6】:

在您的 Xcode 9 项目中,您将看到左侧 3 列搜索图标,单击该图标然后搜索: -对象 在搜索栏中,然后您将看到一个 pod 配置文件打开。 现在从继承的中删除 -ObjC 它将解决问题。

【讨论】:

【参考方案7】:

我不想更改任何这些设置,因为没有人真正知道这些设置可能会产生什么其他副作用。所以我应该全局搜索该变量名,将导致一个类中冲突的名称替换为 variable_Classname。

在不更改任何设置的情况下为我解决了问题

【讨论】:

【参考方案8】:

从错误信息来看,它一定是您项目中的某些文件重复。 比如FilterAlertView、UserNotificationsViewController、SearchView、ExpressSliderCell……等等。您可以在错误信息中看到这一点。

【讨论】:

【参考方案9】:

解决方案在this 帖子中。你不是最新的,但至少它现在解决了这个问题,至少在我的场景中我对那个版本没有任何问题。

【讨论】:

【参考方案10】:

这些是我为解决此问题而采取的步骤:

    选择第一个复制的编译源...在错误消息中搜索某些内容,例如:CDVWKWebViewEngine 或 EventSliderCell.o 在您的情况下; 在 XCODE 中选择您的项目(左上角),然后选择 Build Phases; 在过滤器文本字段中输入已报告为重复的编译源(例如 CDVWKWebViewEngine); 您应该至少收到 2 个该来源的结果 - 一个在 cordova-plugin-ionic-... 中,另一个在 cordova-plugin-wkwebview-... 中; 选择cordova-plugin-wkwebview-...一个并点击“-”号(左下角); 现在尝试再次构建并对所有重复的编译源执行此操作。

【讨论】:

以上是关于Xcode 8.0 更新后架构 arm64 的重复符号的主要内容,如果未能解决你的问题,请参考以下文章

Firebase pod 为架构 arm64 生成重复符号

Xcode 8:找不到用于 pod 的架构 arm64 的符号

XCode - 架构 armv7 arm64 的未定义符号

2 架构 arm64 的重复符号

Bluemix:具有 IMFCore 框架的架构 arm64 的重复符号

Xcode 5 命令行:架构“arm64”的部署目标“3.0.0”无效