Xcode 4 Final - проблема с armv6 armv7 при соединении с armv6 libs

До конца 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").

Мне не нравятся предупреждения:-) У кого-нибудь похожие проблемы?

Спасибо,

Фернандо

Ответы

Ответ 1

Я просто включил активную архитектуру Build только на Yes на вкладке Project → Build Setting → Architectures.

Ответ 2

В iOS SDK 4.3 похоже, что компоновщик просто откажется использовать библиотеку armv6 в двоичном файле armv7 - этого раньше не было.

Вот почему мне пришлось обновить проект http://code.google.com/p/ios-static-libraries/ для создания версий библиотек armv6 и armv7.

Ответ 3

Я добавил стороннюю структуру с некоторыми демонстрационными классами в проект, но как только она была успешно реализована, я удалил эти демонстрационные классы, и с тех пор ошибка начала появляться Ошибка "ld:........., файл универсален, но не содержит (n) armv6 slice для архитектуры armv6"

После того, как я почесал голову на целый день, я нашел это решение на следующее утро, может быть, полезно для друзей-друзей iphone, потому что я знаю боль.

Цели → "Цель вашего проекта" → Получить информацию → Создать активную архитектуру только для YES

Вот оно..

Ответ 4

Была та же проблема. Но причина была другая, я полагаю. Я использовал файл library.a, созданный для симулятора и пытающийся запустить его на устройстве. Узнал, что мне нужны разные файлы .a для симулятора и устройства. Надеюсь, это поможет кому-то;)

Ответ 5

Хотя я до сих пор не знаю, почему это началось только в финальной версии xcode 4, я обнаружил, что мои внешние библиотеки (ssl и crypto) были скомпилированы против armv6 и armv7 в проекте кода Google очень немного дней назад:

http://code.google.com/p/ios-static-libraries/

Это устранит проблему, если вы определите два разных пути поиска библиотеки: один для armv6, один для armv7.

Спасибо,