#iphone #ios #architecture #arm #i386
#iPhone #iOS #архитектура #arm #i386
Вопрос:
У меня есть несколько статических библиотек, которые я создал для использования на архитектурах armv7. Когда я пытаюсь использовать их в проекте iOS, который я тестирую на симуляторе iphone 5.0, я получаю сообщения об ошибках undefined symbols for architecture i386
в моих статических библиотеках.
Итак, я предполагаю, что это означает, что симулятор iphone хочет, чтобы библиотеки были скомпилированы для i386? Тогда в чем смысл симулятора — почему он не эмулирует архитектуру armv7?
Итак, единственный способ протестировать мои статические библиотеки — подключить физическое устройство iOS и запустить его?
Или я ошибся?
Комментарии:
1. Из-за этой проблемы в проекте Android используется эмулятор QEMU. Это намного медленнее, чем симулятор iOS.
Ответ №1:
Итак, я предполагаю, что это означает, что симулятор iphone хочет, чтобы библиотеки были скомпилированы для i386? Тогда в чем смысл симулятора — почему он не эмулирует архитектуру armv7?
Вы ответили на свой вопрос. Это симулятор, а не эмулятор. Следовательно, это программа Mac OSX, работающая на архитектуре i386. Если вы также скомпилируете свои статические библиотеки для i386, вы сможете использовать их в симуляторе.
Ответ №2:
Я не очень уверен, но i386 предназначен для симулятора, а armv7 — для устройств, которые вы подключили к своему компьютеру.
Ответ №3:
На самом деле вы можете скомпилировать приложение с помощью инструмента командной строки Xcode, используя архитектуру i386 (также есть способ запустить его в пользовательском интерфейсе Xcode, изменив настройки сборки).
xcodebuild -sdk iphonesimulator6.1 -arch i386 VALID_ARCHS="i386 armv7 armv7s" clean install
Запустите эту команду в каталоге, в котором у вас есть файл ProjectName.xcodeproj.
Вот разбивка сценария:
-sdk iphonesimulator6.1 // Build the app on iPhone simulator 6.1
-arch i386 // Build your app using i386 architecture
VALID_ARCHS="i386 armv7 armv7s" // Specify these architectures are valid
clean install // Clean all the builds then re-build and install
Комментарии:
1. Спасибо, это сработало для меня из-за новых требований к Open Graph Facebook при отправке объектов на проверку
Ответ №4:
Если вы хотите попробовать симуляторы с i386, просто выберите =< iPhone 5 .