2016-09-20 16 views
6

Недавно мы начали получать это предупреждение в нашей OS X build.Предупреждение ld: команда subl subl слишком отличается от размера размера карлика в 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 

ответ

0

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

Он строится как 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 является проблемой сборки.

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

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

+0

Мы не используем Xcode IDE, но компилируем из командной строки, используя 'make' и' gcc' драйвер. –

+0

также, это предупреждение для x86 ('-arch i386') строит, а не x64 (' -arch x86_64'). –