Я уже провел бесчисленные часы, ломающие голову над этим, используя поиски Google и другие вопросы о Переполнении стека напрасно.
У меня есть повсеместное применение iPhone/iPad, которое, кажется, компилирует прекрасный, когда цель является armv6. Однако, когда устройство является iPad, я получаю это предупреждение:
warning: building for SDK 'Device - iPhone OS 3.2' requires an armv7 architecture.
Достаточно странно приложение все еще работает большой на iPad несмотря на это предупреждение. Однако я действительно хочу сделать вещи "правильный путь", что когда-либо, который означает в этом случае. Когда я переключаю целевую архитектуру на armv7, я получаю соединение ошибок:
"___restore_vfp_d8_d15_regs", referenced from: *redacted* "___save_vfp_d8_d15_regs", referenced from: *redacted* ld: symbol(s) not found collect2: ld returned 1 exit status
"Отредактированные" части ошибок являются ссылками на статическую библиотеку, с которой я пытаюсь связаться.
Вот то, что я попробовал от многих предложений онлайн. Каждый из них был предложен несколько раз без любого объяснения, которое приводит меня полагать, что никто вполне не понимает эту проблему:
"Никогда не используйте выпадающее меню в верхнем левом углу окна XCode для выбора цели. Вместо этого установите это для Базирования SDK и затем Основы SDK к iPhone OS 3.0 в целевой конфигурации. Установите целевое устройство на свою предпочтительную цель (iPad, iPhone OS 3.2 в моей ситуации.)"
Это приводит к ошибке "Библиотека, не найденная для-lcrt1.3.1.o"
"Удостоверьтесь, что GCC не связывается против неверной версии стандартной библиотеки. (Необходимо будет удостовериться, что LIBRARY_SEARCH_PATH не имеет неправильного пути в нем.)"
Мой LIBRARY_SEARCH_PATH уже пуст, таким образом, это не кажется релевантным.
"Попытайтесь компилировать с GCC 4.0, а не GCC 4.2".
Я получаю синтаксическую ошибку в заголовочном файле UIKit. Ошибка является "Синтаксической ошибкой перед маркером 'AT_NAME'". Строка является "UIKIT_EXTERN @interface UILocalizedIndexedCollation: NSObject".
Другой проект компилирует очень хорошо с теми же целевыми настройками, который действительно заставляет меня подвергнуть сомнению свою исправность. Я мог иметь дело с поврежденным проектом XCode?
Если кто-либо знает то, что на самом деле происходит и имеет ссылку или не возражает объяснять это, я был бы так очень благодарен.
Удачи!
VFP между ARMv7 и ARMv6 отличается по-разному. В ARMv7 обычно предпочтительнее использовать NEON. Проблема в том, что ваша статическая библиотека зависит от VFP в ARMv6 - вам нужно либо скомпилировать библиотеку на ARMv7, либо оставить все приложение на ARMv6.
Возвращаться к GCC 4.0 глупо - поддержка ARMv7 в то время практически отсутствовала, если только Apple не перенесла ее обратно.