Xcode 8 beta 6 - 架构的冲突值

时间:2016-08-24 13:59:06

标签: ios xcode

我正在尝试使用Xcode beta 6在设备上安装我的应用,并且在链接阶段失败并出现以下错误:

ld: linking module flags 'Objective-C Class Properties': IDs have conflicting values for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Xcode 8 beta 3正在成功构建应用程序,这可能是什么问题?

3 个答案:

答案 0 :(得分:2)

尝试关闭构建的链接时优化(LLVM_LTO)。我希望他们能在最终版本中解决这个问题。

答案 1 :(得分:1)

我在我的非 Xcode 项目中遇到了类似的问题。

当我将 Xcode 升级到版本 12 时,我开始看到这些消息。

我的设置由几个 3rd 方库和依赖于它们和一些 macOS 系统框架的主项目组成。该项目基于 CMake。

我试图用新的 Xcode 版本重建一切,但没有成功。但我可以确认这与 LTO 相关。 (是的,我也在用瘦 LTO 构建 3rd 方库。)

当我为最新的 macOS 版本 - 11 设置正确的 -isysroot 时发生了突然的变化。然后链接器开始抱怨最低 OSX 版本,特别是太旧了。当我将其设置为 10.15(这是我当前的 macOS)时,问题完全消失了。

因此解决方案是:

  • 设置-mmacosx-version-min=10.15
  • -isysroot设置为MacOSX11.1.sdk,例如:-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdkMacOSX.sdk是lates的符号链接)

注意:我使用的是命令行工具中的 -isysroot,但某些 autoconf 内容也可以解析为 Xcode.app/Contents/Developer/... 最新的 SDK,没有任何问题。两个 SDK(一个来自 Xcode 本身,另一个来自命令行工具)是兼容的。

注意/2:我在这里发布解决方案,因为这个问题是最相关的问题。

答案 2 :(得分:0)

这是因为当包含类别中的类属性和包含类别但是由Xcode 7(或之前)生成的文件的混合文件时,Xcode 8不能进行LTO。 现在唯一的解决方法似乎是使用Xcode 8重建所有文件。