Igo*_*sky 8 c++ macos linker clang dwarf
最近我们开始在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
Run Code Online (Sandbox Code Playgroud)
我可以在Chromium bug跟踪器中找到对此的一些讨论,但建议的"修复"是禁用紧凑的展开生成.我想了解为什么会出现这种警告,以及它是否在我们的代码或工具链中出现问题.
我们的工具链来自Xcode 7.3.1:
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.6.0
Run Code Online (Sandbox Code Playgroud)
在进行一些研究时,我发现最好的答案是工具链有问题,而不是您的代码有问题。
\n\n它构建为 32 位而不是 64 位。要解决这个问题,您需要执行以下两件事之一:
\n\n这就是为什么有些人建议展开,但我没有看到任何选项来抑制有关紧凑展开的警告。似乎只有一个选项可以启用警告-warn_compact_unwind。
您可以做的是禁止将 -Wl,-w 选项传递给编译器的所有链接器警告。
\n\n您可以尝试的另一个临时解决方案是传递-Wl,-no_compact_unwind给 clang。它应该指示链接器不要生成紧凑的展开信息。
最后,尝试针对 64 位架构进行编译。为此,您可以-arch在您的案例中使用编译器选项 \xe2\x80\x93指定体系结构-arch x86_64。\n。
我看到大多数用户指出 Xcode 7,有时 Xcode 6 是问题所在。
\n\n此外,还有另一种方法可以解决此问题。
\n\n\n\n在项目“构建设置”中找到“构建选项”并在选项中设置“否”\n“启用位码”。我希望它对你有帮助。
\n