Xcode 4 Final - проблема "armv6 armv7" при соединении с библиотеками armv6 - PullRequest
17 голосов
/ 15 марта 2011

До финальной версии xcode 4 (я использовал 3.latest и 4 GM в то время, когда она была доступна) этого не происходило.Когда я обновил до финальной версии xcode 4, я начал получать ошибку компоновки при попытке связать версию armv7 с моей библиотекой, не относящейся к 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.Исправление устанавливает мой проект только на armv6.Мой вопрос здесь: почему это работало в предыдущих версиях xcode?

Если я установлю только на armv6, я начну получать это предупреждение:

Check dependencies

[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6").

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

Спасибо,

Фернандо

Ответы [ 5 ]

22 голосов
/ 01 апреля 2011

Я только что переключил активную архитектуру сборки только на Да в Проекте -> Настройка сборки -> вкладка Архитектуры.

7 голосов
/ 28 марта 2011

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

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

3 голосов
/ 07 июля 2011

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

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

Цели -> "Цель вашего проекта" -> Получить информацию -> Создать активную архитектуру только с ДА

То есть ..

1 голос
/ 17 января 2012

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

0 голосов
/ 15 марта 2011

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

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

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

Спасибо,

...