Симулятор iOS на Mac использует архитектуру i386, а не armv7?

#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 .