Введение
OS X поддерживает много сред приложения, каждого с его собственными правилами во время выполнения, соглашениями и форматами файлов. В OS X расширения ядра, инструменты командной строки, приложения, платформы и библиотеки (совместно использованный и статичный) реализованы с помощью Мужественного (объект Маха) файлы.
Архитектура среды выполнения OS X диктует, как объектные файлы размечаются в файловой системе и как программы связываются с ядром. Формат объектных файлов, используемый в OS X, является Мужественным.
Мужественный файл имеет следующие области данных (полный формат описан в OS X ABI Мужественная Ссылка Формата файла):
Заголовок: Указывает целевую архитектуру файла, такого как PPC, PPC64, IA-32 или x86-64.
Команды загрузки: Укажите логическую структуру файла и расположение файла в виртуальной памяти.
Необработанные данные сегмента: Содержит необработанные данные для сегментов, определенных в командах загрузки.
Следующий список описывает другие среды выполнения, поддерживаемые в OS X:
Классика является приложением Mac, выполняющим Mac OS 9 в его адресном пространстве и предоставляющим услуги образования моста, позволяющие OS X взаимодействовать с Mac OS 9 приложений. И классика 68K приложения и PowerPC приложения Code Fragment Manager (CFM) могут работать под Mac OS 9 в Классике. (Mac OS 9 не поддерживает 68K вариант менеджера по Фрагменту Кода, таким образом, Вы не можете запустить приложения CFM-68K в OS X.)
LaunchCFMApp является инструментом командной строки, выполняющим программы, создаваемые для менеджера по Фрагменту Кода PowerPC. Формат файла, используемый такими программами, вызывают Preferred Executable Format (PEF). Углерод предоставляет образование моста менеджеру по Фрагменту Кода приложения, который позволяет им соединяться с кодом Mach-O–based, но — для простоты отладки, если ни по какой другой причине — это обычно - хорошая идея использовать Мужественный для приложений Углерода.
Виртуальная машина Java HotSpot является приложением Mac, выполняющим приложения Байт-кода Java и апплеты.
Ядро OS X поддерживает расширения ядра (KEXTs), которые являются статическими Мужественными исполняемыми файлами, загружающимися непосредственно в адресное пространство ядра. Поскольку ошибочный код может записать непосредственно в память, используемую ядром, расширения ядра имеют потенциал для катастрофического отказа операционной системы. Необходимо обычно избегать реализовывать функциональность как расширения ядра, если это возможно.
Менеджер по Фрагменту Кода документируется в Архитектуру Времени выполнения Mac OS, доступную от веб-сайта Соединения Разработчика Apple.
Этот документ обсуждает, как Вы используете Мужественный формат файла. Это описывает, какие типы программ можно создать, как программы загружаются и выполняются, как можно изменить способ, которым программы загружаются и выполняются, как загрузить код во время выполнения, и как загрузить и соединить код во время выполнения. Если Вы создадите или загрузите пакеты, совместно использованные библиотеки или платформы, то Вы, вероятно, захотите считать и понять все в этом документе.
Кто должен считать этот документ
Если Вы пишете средства разработки для OS X, необходимо понять информацию, представленную в этом документе.
Этот документ также полезен для разработчиков совместно используемых библиотек и платформ, и для разработчиков приложений, которые должны загрузить код во время выполнения.
Организация этого документа
Этот документ содержит следующие статьи:
Создание Мужественных Файлов описывает, как приложения Mac создаются, и описывает типы программ, которые можно разработать.
Выполнение Мужественных Файлов обеспечивает обзор OS X динамический процесс загрузки.
Загрузка Кода во Время выполнения описывает, как пользоваться совместно используемыми библиотеками и платформами и как загрузить плагины во время выполнения.
Косвенная адресация объясняет, как Мужественный файл относится к символам, определенным в другом Мужественном файле.
Позиционно-независимый Код обсуждает метод, которым динамический компоновщик загружает область кода в нефиксированном адресе виртуальной памяти.
Модель Кода x86-64 описывает различия в OS X x86-64 модель кода пространства пользователя от System V x86-64 модель кода.
Этот документ также содержит историю редакций и индекс.
См. также
Можно получить доступ к полной справочной документации для стандартных средств разработки командной строки с помощью man
инструмент на командной строке, или путем выбора Open Man Page из Меню справки XCode.
Этот документ предоставляет информацию о Мужественной архитектуре среды выполнения. Это не адресует следующее:
Описания структур данных, составляющих Мужественный файл. Можно счесть эту информацию в OS X ABI Мужественная Ссылка Формата файла.
Если Вы загружаете код во время выполнения, но не может или не хотеть использовать
CFBundle
непрозрачный тип илиNSBundle
класс, необходимо отослать к OS X ABI Динамическая Ссылка Загрузчика.Двоичный интерфейс приложения C++ GCC — спецификация задействованного расположения класса C++, искажения функции/имени метода и связанных проблем C++. Эта информация документируется для GCC 3.0 и позже в http://www .codesourcery.com/cxx-abi/abi.html.
Структуры данных Objective C GCC и динамические функции времени выполнения. Дополнительные сведения см. в Языке программирования Objective C.
Среда выполнения ядра OS X, Дарвина. См. Технологический Обзор Mac для получения дополнительной информации.
Исходный код из Дарвинского проекта может быть загружен с http://developer .apple.com/darwin/.
Вы могли бы также счесть следующие книги полезными в сочетании с этим документом:
Архитектура Времени выполнения Mac OS, Apple Computer, Inc. Доступный в http://developer .apple.com/tools/mpw-tools/books.html. Документирует классику 68K архитектура загрузчика сегмента, а также менеджер по Фрагменту Кода Предпочтительный Исполнимый формат исполняемых файлов, используемый с классическими приложениями PowerPC и со многими приложениями Углерода.
Компоновщики и Загрузчики, Джон R. Левин, Морган Кофман, 2000, ISBN 1-55860-496-0. Описывает работы и работу типичных компоновщиков от самых ранних загрузчиков программы до существующих редакторов динамического канала. Среди содержания этой книги обсуждения классического BSD
a.out
формат, Исполнимая программа и Соединение Формата (ELF), предпочтенный многими текущими операционными системами, Системным/360 выходным форматом компоновщика IBM и форматом Microsoft Portable Executable (PE).Двоичный интерфейс приложений System V Дополнение Процессора Архитектуры AMD64. Найденный в http://www .x86-64.org/documentation, этот документ описывает System V x86-64 среда, на которой базируется OS X x86-64 среда.