Создание позиции независимая исполнимая программа
Q: Я получил «Двоичный файл неPIE - исполнимая программа' <appname> .app' не является Позицией Независимая Исполнимая программа. Гарантируйте, что Ваши настройки сборки сконфигурированы для создания исполнимых программ PIE». предупреждение после загрузки моего приложения к Подключению iTunes. Как я создаю свое приложение как Position Independent Executable (PIE)?
A: Приложения Position Independent Executable (PIE) могут быть загружены в случайном адресе памяти, когда выполнено. Это обладает преимуществами безопасности для Вашего приложения. iOS 4.3 или позже, и OS X 10.7 или позже, полностью поддерживает исполнимые программы PIE.
Шаги для того, чтобы создать Ваше приложение как PIE
В XCode выберите свою цель в разделе «Targets», затем щелкните по вкладке «Build Settings» для просмотра ее настроек.
Для приложений для iOS, набора
iOS Deployment Target
к iOS 4.3 или позже. Для приложений Mac, набораOS X Deployment Target
к OS X 10.7 или позже.Проверьте это
Generate Position-Dependent Code
установлен в его значении по умолчаниюNO
.Проверьте это
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 | Новый документ, адресующийся, как создать Позицию Независимая Исполнимая программа. |