Ответ 1
Я просто включил активную архитектуру Build только на Yes на вкладке Project → Build Setting → Architectures.
До конца xcode 4 (я использовал 3.latest и 4 GM за время, когда он был доступен) этого не произошло. Когда я обновился до окончательной версии xcode 4, я начал получать ошибку привязки при попытке связать версию armv7 с моей библиотекой non armv7 (мой проект настроен с использованием стандартных стандартных armv6 armv7):
ld: warning: ignoring file ../bin/iOS static/arm/libssl.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../bin/iOS static/arm/libcrypto.a, file was built for archive which is not the architecture being linked (armv7)
Undefined symbols for architecture armv7: -- list of symbols --
Версия armv6 компилируется просто отлично, но общий процесс компиляции завершился неудачей с 77 ошибками ссылок.
Я понимаю, что это ожидаемое поведение, оно не связывается с armv7 с armv6 lib. Исправление устанавливает мой проект только в armv6. Мой вопрос здесь: почему это работало в предыдущих версиях xcode?
Если я настроен только на armv6, я начинаю получать это предупреждение:
Check dependencies
[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6").
Мне не нравятся предупреждения:-) У кого-нибудь похожие проблемы?
Спасибо,
Фернандо
Я просто включил активную архитектуру Build только на Yes на вкладке Project → Build Setting → Architectures.
В iOS SDK 4.3 похоже, что компоновщик просто откажется использовать библиотеку armv6 в двоичном файле armv7 - этого раньше не было.
Вот почему мне пришлось обновить проект http://code.google.com/p/ios-static-libraries/ для создания версий библиотек armv6 и armv7.
Я добавил стороннюю структуру с некоторыми демонстрационными классами в проект, но как только она была успешно реализована, я удалил эти демонстрационные классы, и с тех пор ошибка начала появляться Ошибка "ld:........., файл универсален, но не содержит (n) armv6 slice для архитектуры armv6"
После того, как я почесал голову на целый день, я нашел это решение на следующее утро, может быть, полезно для друзей-друзей iphone, потому что я знаю боль.
Цели → "Цель вашего проекта" → Получить информацию → Создать активную архитектуру только для YES
Вот оно..
Была та же проблема. Но причина была другая, я полагаю. Я использовал файл library.a, созданный для симулятора и пытающийся запустить его на устройстве. Узнал, что мне нужны разные файлы .a для симулятора и устройства. Надеюсь, это поможет кому-то;)
Хотя я до сих пор не знаю, почему это началось только в финальной версии xcode 4, я обнаружил, что мои внешние библиотеки (ssl и crypto) были скомпилированы против armv6 и armv7 в проекте кода Google очень немного дней назад:
http://code.google.com/p/ios-static-libraries/
Это устранит проблему, если вы определите два разных пути поиска библиотеки: один для armv6, один для armv7.
Спасибо,