最近我们开始在OS X版本上收到此警告。
ld: warning:
could not create compact unwind for __Z10createMenuv: stack subl instruction is too different from dwarf stack size
ld: warning:
could not create compact unwind for __Z10del_modulejb: stack subl instruction is too different from dwarf stack size
could not create compact unwind for __Z14menu_patchbytev: stack subl instruction is too different from dwarf stack size
我可以在Chromium bug跟踪器中找到对此的一些讨论,但建议的“修复”是禁用紧凑的展开生成。我想了解为什么会出现这种警告,以及它是否在我们的代码或工具链中出现问题。
我们的工具链来自Xcode 7.3.1:
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.6.0
答案 0 :(得分:1)
在进行一些研究时,我发现最好的答案是工具链存在问题,而不是具体的代码。
它正在构建为32位而不是64位。要解决这个问题,您需要做以下两件事之一:
这就是为什么有人建议放松,但我没有看到任何选项来抑制关于紧凑放松的警告。似乎只有一个选项可以启用警告-warn_compact_unwind
。
您可以做的是禁止向编译器传递-Wl,-w选项的所有链接器警告。
您可以尝试的另一个临时解决方案是将-Wl,-no_compact_unwind
传递给clang。它应该指示链接器不生成紧凑的展开信息。
最后,尝试编译64位架构。为此,您可以使用-arch
编译器选项指定体系结构 - 在您的情况下为-arch x86_64
。
我看到大多数用户指向Xcode 7,有时Xcode 6是问题构建。
此外,还有另一种方法可以解决此问题。
在项目构建设置中,找到构建选项并在选项中设置否 启用Bitcode。我希望它对你有所帮助。