недавно мы начали получать это предупреждение в нашей сборке 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, но предлагаемое «исправление» — отключить компактную генерацию раскрутки. Я хотел бы понять, почему возникает это предупреждение и возникает ли проблема в нашем коде или в цепочке инструментов.
Наш набор инструментов из Xcode 7.3.1:
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.6.0
В некоторых исследованиях лучший ответ, который я вижу, состоит в том, что есть проблема с набором инструментов, а не с вашим кодом конкретно.
Он строится как 32-битный, а не 64-битный. И чтобы решить это, вам нужно сделать одну из двух вещей:
Вот почему некоторые рекомендуют разматывать, но я не вижу никакой возможности подавить предупреждение о компактном размотке. Кажется, есть только опция, чтобы включить предупреждение -warn_compact_unwind
,
Что вы можете сделать, это подавить все предупреждения компоновщика, передавая -Wl, -w параметр компилятору.
Еще одно временное решение, которое вы можете попробовать, это прохождение -Wl,-no_compact_unwind
лязгать Он должен дать указание компоновщику не генерировать компактную информацию для раскрутки.
Наконец, попробуйте компилировать для 64-битной архитектуры. Для этого вы указываете архитектуру с -arch
опция компилятора — в вашем случае -arch x86_64
,
,
Я вижу, что большинство пользователей указывают на Xcode 7, а иногда Xcode 6 создает проблему.
Кроме того, есть еще один способ исправить это.
В настройках проекта проекта найдите «Параметры сборки» и установите «Нет в опции».
Включить биткод Я надеюсь, что это поможет вам.
Других решений пока нет …