Ответ 1
Я понял, что вызвало проблему. Я изменил "Создавать только активную архитектуру" в TapkuLibrary от "Да" до "Нет" и компилируется без проблем.
Недавно я переключился на Xcode4, и когда я скомпилировал свой проект, я получил следующую ошибку.
ld: warning: ignoring file /Users/myname/Library/Developer/Xcode/DerivedData/appname-hezrgyqimckztgbdlslkavphdclw/Build/Products/Debug-iphoneos/libTapkuLibrary.a, file was built for archive which is not the architecture being linked (armv6)
Undefined symbols for architecture armv6:
"_OBJC_CLASS_$_TKLoadingView", referenced from:
objc-class-ref in RootViewController.o
Я открыл TapkuLibrary и проверил, что для него установлено значение "Standard (armv6 armv7)".
Что я могу сделать, чтобы исправить эту проблему?
Я понял, что вызвало проблему. Я изменил "Создавать только активную архитектуру" в TapkuLibrary от "Да" до "Нет" и компилируется без проблем.
Я смог решить эту проблему, выполнив противоположный принятый ответ - я изменил "Только встроенную активную архитектуру" от NO до YES.
Была та же проблема. Но причина была другая, я полагаю. Я использовал файл library.a, созданный для симулятора и пытающийся запустить его на устройстве. Узнал, что мне нужны разные файлы .a для симулятора и устройства. Надеюсь, это поможет кому-то;)
Я встретил эту проблему, когда обновил XCode до 4.5 и iOS до iOS6. Для GMGridView это произошло. Не для симулятора, а только для устройства.
Я исправил это следующими шагами: 1) Перейти к проекту GMGridView → Настройки сборки 2) В разделе "Настройка → Архитектура" выберите "Стандартные (armv7, armv7s)"
Затем очистите все (включая DerivedData) и перестройте.
Надеюсь, что это поможет!
Попробуйте удалить архитектуру armv6 и скомпилируйте ее только для armv7.
Что-то еще, что сработало для меня, заключалось в том, чтобы все подпроекты имели архитектуру, установленную как armv6 и armv7, поэтому устанавливали как TARGET, так и PROJECT для каждого подпроекта. После очистки и восстановления всего, он работал без проблем.
Это решило проблему для меня:
В некоторой внешней библиотеке, например, три20, были добавлены дополнительные настройки для
Настройки сборки- > Архитектуры- > Любой SDK для iOS
значение "armv6 armv7", которое отличается от стандартного "armv7 armv7s"
снимите и выберите "Стандарт", это сработало для меня.
Мне это удалось, щелкнув "Недружественный" проект (в моем случае GMGridView). На вкладке "Архитектура" я изменил значение от чего-то (я больше не помню больше, я думаю, это было:) "armv7, armv6s" до "armv7, armv7". После этого он работал у меня.
Мне удалось решить эту проблему, просто создав конфигурацию adhoc внутри информационных параметров Tapku...
Убедитесь, что варианты сборки в ваших проектах установлены на "нормальные".
Если вы строите проект, который включает другие проекты, загляните в папку DerivedData для основного проекта. Изучите архивные файлы с помощью "lipo -info yourarchive.a". Кроме того, просмотрите отметки времени в этих архивах. Вы можете обнаружить, что эти библиотеки не перестраиваются, или вы пытаетесь установить ссылку на старую версию архива, которая является неправильной архитектурой.
В моем случае я выключил Xcode и удалил папку DerivedData для моего основного проекта. Это привело к полной перестройке, когда я снова открыл основной проект в Xcode 4. Полная перестройка вызвала создание архивов i386 (или правильную версию для поиска) и версию симулятора для правильной ссылки.
Это сработало для меня:
Нажмите на файл "Проект" для нарушителя (xcodeproj).
Перейдите на вкладку "Информация" для рамки "Проект" (не "Целевой" ).
Разверните "Конфигурации" и убедитесь, что оба "Отладки" и "Релиз" имеют 2 конфигурации: один для рамки "Проект" , а другой для рамки "Цель". В случае фреймворков "Target" компилируется в библиотеку, а не в приложение, поэтому легко запутаться.
"Отладка" должна иметь проект "Отладка", а библиотека установлена в "Общий"
"Релиз" должен иметь проект "Отпустить", а в библиотеке установлен "Общий"
Скомпилируйте, запустите и наслаждайтесь.
Если вы закончите работу над всем проектом, пытаясь понять это, тогда вам может потребоваться повторная проверка фаз сборки Application Project (как предложил Gon). Библиотека должна быть выделена красным цветом, даже если она не существует на вашем диске. Если нет, до тех пор, пока он установлен в "Общий" , вы должны иметь возможность добавить его обратно.
Если вы действительно действительно исказили свой проект, вы можете быть вынуждены взорвать свою папку DerivedData, как предложили русские. Кроме того, проверьте "Организатор", поскольку Xcode имеет способ сохранить дерьмо повсюду.
О, и вы проверили, чтобы убедиться, что "armv6" есть?:)
Если я получу предупреждение об игнорировании файла, я запустил бы lipo -info
в игнорируемый файл, чтобы найти его как ниже,
lipo -info libTapkuLibrary.a
Это будет печатать либо i386, armv6, armv7, armv7s, x86_64 и т.д. В общем, эта архитектура должна соответствовать вашей целевой платформе сборки. Например.
В зависимости от несоответствия либо вам необходимо перестроить свою библиотеку для целевой платформы, либо изменить целевую платформу.
Примечание. Для жирных двоичных файлов lipo -info
напечатает комбинацию из вышеперечисленных архитектур.
Я исправил эту проблему благодаря другой теме, где они показывают, что armv6/armv7 на самом деле немного отличается от того, что вы думаете: Обновление до ошибки xcode 4 Нет архитектур для компиляции для
Я попробовал все варианты выше, и никто не работал.
Правильный ответ:
просто перетаскивание рамки в вашем проекте не будет правильно связывать ее (или что-то в этом направлении)
то, что вам нужно сделать, это выбрать фрейм, который вы хотите добавить в Build Phases (щелкните по синему значку проекта, затем выберите название проекта в разделе "Цели", затем вкладка "Сборка фаз" ), см. здесь для получения дополнительной информации.
Ни один из этих ответов не работал у меня. (Аналогичное предупреждение, другой проект статической библиотеки). Для меня он сконфигурировал XCode, чтобы почтить каталоги сборки целевых объектов, а затем создал целые сборки в локальном каталоге build/
, вызвавшем эту проблему. Настройка XCOde для использования папки "Производные данные" исправила ее.
У меня была эта проблема с библиотекой Three20. Вещь, которая в конечном итоге сделала это для меня, заключалась в переключении формата проекта с Xcode 3.1 на Xcode 3.2 - оставление "build active arch only" только как "нет".
Имел ту же проблему и пробовал разнообразные решения со страницы безрезультатно. У меня все еще было сообщение о том, что моя библиотека не была создана для arm64.
Наконец, как я его разрешил:
Похоже, что настройки сборки, отображаемые XCode, являются неполными и не соответствуют именно файлу make.