В процессе обновления библиотеки MacOS я изменил целевую версию развертывания OS X с 10.8 до 10.9. Однако в одной из библиотечных зависимостей использовался Intel IPP (Intel Performance Primitives), который выдавал кучу предупреждений «не удалось создать компактный раскрутку», например ::100100
ld: warning: could not create compact unwind for _ippStaticInitCpu: register saved more than once (might be shrink wrap)
ld: warning: could not create compact unwind for _ippStaticInit: register 13 saved somewhere other than in frame
и т.д.. сотни таких сообщений.
Чтобы избавиться от них, в компоновщик был передан флаг -no_compact_unwind
, который отлично работал для цели развертывания 10.8, но для 10.9 это вызывает проблему с libc ++ abi, где исключения не перехватываются.
Я обнаружил, что библиотека может быть создана и, кажется, работает, передавая -keep-dwarf-unwind
в дополнение к -no-compact-unwind
, но меня немного беспокоит, что я не понимаю, что происходит. Какой порядок действий здесь предпочтителен, каковы преимущества / недостатки / риски?
- Перейти с
-keep-dwarf-unwind
- Подавить или игнорировать предупреждения
- Может быть, зависимость просто несовместима с целью развертывания 10.9, и мне следует отложить обновление до его обновления (например, для использования другой версии IPP)?
- Другие варианты?