Технические вопросы и ответы QA1788

Создание позиции независимая исполнимая программа

Q: Я получил «Двоичный файл неPIE - исполнимая программа' <appname> .app' не является Позицией Независимая Исполнимая программа. Гарантируйте, что Ваши настройки сборки сконфигурированы для создания исполнимых программ PIE». предупреждение после загрузки моего приложения к Подключению iTunes. Как я создаю свое приложение как Position Independent Executable (PIE)?

A: Приложения Position Independent Executable (PIE) могут быть загружены в случайном адресе памяти, когда выполнено. Это обладает преимуществами безопасности для Вашего приложения. iOS 4.3 или позже, и OS X 10.7 или позже, полностью поддерживает исполнимые программы PIE.

Шаги для того, чтобы создать Ваше приложение как PIE

  1. В XCode выберите свою цель в разделе «Targets», затем щелкните по вкладке «Build Settings» для просмотра ее настроек.

  2. Для приложений для iOS, набора iOS Deployment Target к iOS 4.3 или позже. Для приложений Mac, набора OS X Deployment Target к OS X 10.7 или позже.

  3. Проверьте это Generate Position-Dependent Code установлен в его значении по умолчанию NO.

  4. Проверьте это Don't Create Position Independent Executables установлен в его значении по умолчанию NO.

Проверка, что приложение было создано как PIE

Можно проверить, является ли приложением PIE путем выполнения otool -hv на Вашей исполнимой программе в Терминале. Если его заголовок содержит, Вашим приложением является PIE PIE флаг. Перечисление 1 показывает пример того, как сделать это для приложения для iOS.

  Пример перечисления 1 приложения PIE

 $ otool -hv /path/to/MyApp.app/MyApp
MyApp:
Mach header
magic   cputype cpusubtype caps filetype  ncmds  sizeofcmds   flags
MH_MAGIC  ARM    V7        0x00  EXECUTE    23        2372     NOUNDEFS DYLDLINK TWOLEVEL PIE


История версии документа


ДатаПримечания
20.02.2014

Разъясненный понятие PIE для приложений с зависимостями.

23.05.2013

Новый документ, адресующийся, как создать Позицию Независимая Исполнимая программа.