Предупреждение ld: инструкция subl стека слишком отличается от размера стека карликов в OS X

недавно мы начали получать это предупреждение в нашей сборке 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

7

Решение

В некоторых исследованиях лучший ответ, который я вижу, состоит в том, что есть проблема с набором инструментов, а не с вашим кодом конкретно.

Он строится как 32-битный, а не 64-битный. И чтобы решить это, вам нужно сделать одну из двух вещей:

  1. Используйте 64-битную версию набора инструментов xCode вместо 32-битной
    один.
  2. Укажите правильную опцию во время компиляции, чтобы испустить x86_64
    код

Вот почему некоторые рекомендуют разматывать, но я не вижу никакой возможности подавить предупреждение о компактном размотке. Кажется, есть только опция, чтобы включить предупреждение -warn_compact_unwind,

Что вы можете сделать, это подавить все предупреждения компоновщика, передавая -Wl, -w параметр компилятору.

Еще одно временное решение, которое вы можете попробовать, это прохождение -Wl,-no_compact_unwind лязгать Он должен дать указание компоновщику не генерировать компактную информацию для раскрутки.

Наконец, попробуйте компилировать для 64-битной архитектуры. Для этого вы указываете архитектуру с -arch опция компилятора — в вашем случае -arch x86_64,
,

Я вижу, что большинство пользователей указывают на Xcode 7, а иногда Xcode 6 создает проблему.

Кроме того, есть еще один способ исправить это.

В настройках проекта проекта найдите «Параметры сборки» и установите «Нет в опции».
Включить биткод Я надеюсь, что это поможет вам.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]