Мачо - Mach-O
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
Расширение имени файла | никто, .o, .dylib, .bundle |
---|---|
Единый идентификатор типа (UTI) | com.apple.mach-o-binary |
Разработан | Университет Карнеги Меллон, Apple Inc. |
Тип формата | Двоичный, исполняемый файл, объект, общие библиотеки, дамп ядра |
Контейнер для | РУКА, SPARC, PA-RISC, PowerPC и x86 исполняемый файл код, дампы образов памяти |
Мачо, Короче для Мах объект формат файла, это формат файла для исполняемые файлы, объектный код, общие библиотеки, динамически загружаемый код и дампы керна. Замена а. выход формат, Mach-O предлагает больше расширяемость и более быстрый доступ к информации в таблица символов.
Mach-O используется в большинстве систем на базе Ядро Маха. Следующий шаг, macOS, и iOS являются примерами систем, которые используют этот формат для собственных исполняемых файлов, библиотек и объектного кода.
Макет файла Mach-O
Каждый файл Mach-O состоит из одного заголовка Mach-O, за которым следует серия команд загрузки, за которыми следуют один или несколько сегментов, каждый из которых содержит от 0 до 255 разделов. Mach-O использует REL переезд формат для обработки ссылок на символы. При поиске символов Mach-O использует двухуровневую пространство имен который кодирует каждый символ в пару «объект / имя символа», которую затем выполняет линейный поиск, сначала по объекту, а затем по имени символа.[1]
Базовая структура - список «команд загрузки» переменной длины, которые ссылаются на страницы данных в другом месте файла.[2]- также использовался в формате исполняемого файла для Акцент.[нужна цитата ] Формат файла Accent, в свою очередь, был основан на идее от Spice Lisp.[нужна цитата ]
Бинарные файлы с несколькими архитектурами
Под Следующий шаг, ОТКРЫТЬ, macOS, и iOS, несколько файлов Mach-O можно объединить в двоичный файл с несколькими архитектурами. Это позволяет одному двоичному файлу содержать код для поддержки нескольких архитектур наборов команд. Например, многоархитектурный двоичный файл для iOS может иметь 6 архитектур наборов инструкций, а именно ARMv6 (для iPhone, 3G и 1/2 поколения Ipod Touch ), ARMv7 (для iPhone 3GS, 4, 4S, iPad, 2, 3-е поколение и iPod touch 3–5-го поколения), ARMv7s (для iPhone 5 и iPad (4-го поколения) ), ARMv8 (для айфон 5с ), x86 (для симулятора iPhone на 32-битных машинах) и x86_64 (для 64-битного симулятора).[нужна цитата ]
Минимальная версия ОС
С введением Mac OS X 10.6 платформе файл Mach-O претерпел значительные изменения, в результате чего двоичные файлы, скомпилированные на компьютере под управлением 10.6 или новее, становятся (по умолчанию) исполняемыми только на компьютерах под управлением Mac OS X 10.6 или новее. Разница связана с командами загрузки, которые динамический компоновщик в предыдущих версиях Mac OS X не понимает. Еще одно существенное изменение формата Mach-O - это изменение того, как работают таблицы редактирования ссылок (находятся в разделе __LINKEDIT). В версии 10.6 эти новые таблицы редактирования ссылок сжимаются путем удаления неиспользуемых и ненужных битов информации, однако Mac OS X 10.5 и более ранние версии не могут читать этот новый формат таблицы редактирования ссылок. Чтобы сделать исполняемые файлы с обратной совместимостью, можно использовать флаг компоновщика «-mmacosx-version-min =».
Другие реализации
Некоторые версии NetBSD была добавлена поддержка Mach-O как часть реализации двоичной совместимости, которая позволяла запускать некоторые двоичные файлы Mac OS 10.3.[3][4]
Для Linux загрузчик Mach-O написал Шиничиро Хамаджи.[5] который может загружать бинарные файлы 10.6. Как более обширное решение на основе этого загрузчика, Любимый проект стремится предоставить полную среду, позволяющую приложениям OS X работать в Linux.
Для Рубин язык программирования, рубиновый мачо[6] Библиотека предоставляет реализацию двоичного анализатора и редактора Mach-O.
Смотрите также
- Жир двоичный
- Универсальный двоичный файл
- Переход Mac на процессоры Intel
- Переход Mac на Apple Silicon
- Xcode
- Сравнение форматов исполняемых файлов
использованная литература
- ^ «Справочник по формату файла OS X ABI Mach-O». Apple Inc. 4 февраля 2009 г. Архивировано с оригинал 19 августа 2009 г.. Получено 27 апреля, 2016.
- ^ Авадис Теванян младший; Ричард Ф. Рашид; Майкл В. Янг; Дэвид Б. Голуб; Мэри Р. Томпсон; Уильям Болоски; Ричард Санси. "Интерфейс Unix для совместно используемой памяти и файлов, отображаемых в памяти под Mach": 8. Цитировать журнал требует
| журнал =
(Помогите) - ^ Эммануэль Дрейфус (20 июня 2006 г.). "Бинарная совместимость Маха и Дарвина [sic] для NetBSD / powerpc и NetBSD / i386 ". Получено 18 октября, 2013.
- ^ Эммануэль Дрейфус (сентябрь 2004 г.), Двоичная совместимость Mac OS X с NetBSD: проблемы и реализация (PDF)
- ^ Шиничиро Хамадзи, Загрузчик Mach-O для Linux - я писал ...
- ^ Уильям Вудрафф, Библиотека на чистом Ruby для анализа файлов Mach-O.
внешние ссылки
- Справочник по формату файла OS X ABI Mach-O (Apple Inc.)
- Дарвин и macOS Форматы файлов Руководство по эксплуатации –
- Файлы объектов Mach (Документация NEXTSTEP)
- Справочник по динамической библиотеке Mach-O
- Уловки связывания и загрузки Mach-O
- MachOView