Jump to content

Исполняемый и связываемый формат

Исполняемый и связываемый формат
Расширение имени файла
никто, .axf , .bin , .эльф , , .вне , .prx , .puff , .является , .мод и .так
Магическое число 0x7F 'E' 'L' 'F'
Разработано Системные лаборатории Unix [ 1 ] : 3 
Тип формата Двоичный файл , исполняемый файл , объект , общая библиотека , дамп ядра
Контейнер для Множество исполняемых двоичных форматов
Файл ELF имеет два представления: заголовок программы показывает сегменты, используемые во время выполнения, тогда как заголовок раздела перечисляет набор разделов .

В вычислениях формат исполняемый и связываемый [ 2 ] ( ELF , ранее называвшийся Extensible Linking Format ) — общий стандартный формат файлов для исполняемых файлов, объектного кода , общих библиотек и дампов ядра . Впервые опубликовано в спецификации двоичного интерфейса приложения (ABI) Unix версии операционной системы под названием System V Release 4 (SVR4). [ 3 ] и позже в Стандарте интерфейса инструмента, [ 1 ] он был быстро принят различными поставщиками систем Unix . выбрал его в качестве стандартного формата двоичных файлов для Unix и Unix-подобных систем на x86 процессорах В 1999 году проект 86open .

По своей конструкции формат ELF является гибким, расширяемым и кроссплатформенным . Например, он поддерживает разные порядки байтов и размеры адресов, поэтому не исключает какой-либо конкретный процессор или архитектуру набора команд . Это позволило ему быть адаптированным во многих различных операционных системах на многих различных аппаратных платформах .

Макет файла

[ редактировать ]

Каждый файл ELF состоит из одного заголовка ELF, за которым следуют данные файла. Данные могут включать в себя:

  • Таблица заголовков программы, описывающая ноль или более сегментов памяти.
  • Таблица заголовков разделов, описывающая ноль или более разделов.
  • Данные, на которые ссылаются записи в таблице заголовков программы или таблице заголовков разделов.
Структура файла ELF с выделенными ключевыми записями

Сегменты содержат информацию, необходимую для во время выполнения выполнения файла , а разделы содержат важные данные для связывания и перемещения. Любой байт во всем файле может принадлежать не более чем одному разделу, но могут встречаться потерянные байты, которые не принадлежат ни одному разделу.


Заголовок файла

[ редактировать ]

Заголовок ELF определяет, использовать ли 32-битные или 64-битные адреса. Заголовок содержит три поля, на которые влияет этот параметр, и смещает другие поля, следующие за ними. Заголовок ELF имеет длину 52 или 64 байта для 32-битных и 64-битных двоичных файлов соответственно.

ЭЛЬФ-заголовок [ 4 ]
Компенсировать Размер (байты) Поле Цель
32-битный 64-битная 32-битный 64-битная
0x00 4 e_ident[EI_MAG0] через e_ident[EI_MAG3] 0x7F с последующим ELF( 45 4c 46) в ASCII ; эти четыре байта составляют магическое число .
0x04 1 e_ident[EI_CLASS] Этот байт имеет значение либо 1 или 2 для обозначения 32- или 64-битного формата соответственно.
0x05 1 e_ident[EI_DATA] Этот байт имеет значение либо 1 или 2 для обозначения маленького или большого порядка байтов соответственно. Это влияет на интерпретацию многобайтовых полей, начинающихся со смещения. 0x10.
0x06 1 e_ident[EI_VERSION] Установить на 1 для исходной и текущей версии ELF.
0x07 1 e_ident[EI_OSABI] целевой операционной системы Идентифицирует ABI .
Ценить АБИ
0x00 System V
0x01 HP-UX
0x02 NetBSD
0x03 Линукс
0x04 ГНУ Херд
0x06 Солярис
0x07 AIX (Монтерей)
0x08 ИРИКС
0x09 FreeBSD
0x0A Тру64
0x0B Новелл Модесто
0x0C OpenBSD
0x0D OpenVMS
0x0E Нонстоп-ядро
0x0F ЖДАТЬ
0x10 ФениксОС
0x11 Nuxi CloudABI
0x12 Стратус Технологии OpenVOS
0x08 1 e_ident[EI_ABIVERSION] Далее указывается версия ABI. Его интерпретация зависит от целевого ABI. Ядро Linux (по крайней мере после версии 2.6) не имеет его определения, [ 5 ] поэтому он игнорируется для статически связанных исполняемых файлов. В этом случае смещение и размер EI_PAD равны 8.

glibc 2.12+ на всякий случай e_ident[EI_OSABI] == 3 рассматривает это поле как версию ABI динамического компоновщика : [ 6 ] он определяет список функций динамического компоновщика, [ 7 ] лечит e_ident[EI_ABIVERSION] как уровень функции, запрошенный общим объектом (исполняемым файлом или динамической библиотекой), и отказывается загружать его, если запрашивается неизвестная функция, т.е. e_ident[EI_ABIVERSION] больше, чем самый большой известный объект. [ 8 ]

0x09 7 e_ident[EI_PAD] Зарезервированные байты заполнения. В настоящее время не используется. Должен быть заполнен нулями и игнорироваться при чтении.
0x10 2 e_type Определяет тип объектного файла.
Ценить Тип Значение
0x00 И_НЕТ Неизвестный.
0x01 ET_REL Перемещаемый файл.
0x02 ET_EXEC Исполняемый файл.
0x03 ET_DYN Общий объект.
0x04 ET_CORE Основной файл.
0xFE00 ЭТ_ЛООС Зарезервированный инклюзивный диапазон. Специфическая операционная система.
0xFEFF ET_HIOS
0xFF00 ET_LOPROC Зарезервированный инклюзивный диапазон. Зависит от процессора.
0xFFFF ET_HIPROC
0x12 2 электронная машина Определяет целевую архитектуру набора команд . Некоторые примеры:
Ценить ОДИН
0x00 Нет конкретного набора инструкций
0x01 АТ&Т МЫ 32100
0x02 СПАРК
0x03 х86
0x04 Моторола 68000 (М68к)
0x05 Моторола 88000 (М88к)
0x06 Intel MCU
0x07 Интел 80860
0x08 МИПС
0x09 IBM Система/370
0x0A MIPS RS3000 с прямым порядком байтов
0x0B - 0x0E Зарезервировано для будущего использования
0x0F Hewlett-Packard PA-RISC
0x13 Интел 80960
0x14 PowerPC
0x15 PowerPC (64-разрядная версия)
0x16 S390 , включая S390x
0x17 IBM СПУ/СПК
0x18 - 0x23 Зарезервировано для будущего использования
0x24 НЭК В800
0x25 Фуджицу FR20
0x26 TRW RH-32
0x27 Моторола РЦЭ
0x28 Постановка на охрану (до Armv7/AArch32)
0x29 Цифровая Альфа
0x2A СуперХ
0x2B СПАРК Версия 9
0x2C Встроенный процессор Siemens TriCore
0x2D Аргонавт RISC Core
0x2E Хитачи H8/300
0x2F Хитачи H8/300H
0x30 Хитачи H8S
0x31 Хитачи H8/500
0x32 ИА-64
0x33 Стэнфордский MIPS-X
0x34 Моторола КолдФайр
0x35 Моторола M68HC12
0x36 Мультимедийный ускоритель Fujitsu MMA
0x37 Сименс ПКП
0x38 Встроенный RISC-процессор Sony nCPU
0x39 Микропроцессор Denso NDR1
0x3A Процессор Motorola Star*Core
0x3B Процессор Тойота МЕ16
0x3C Процессор STMicroelectronics ST100
0x3D Семейство встраиваемых процессоров Advanced Logic Corp. TinyJ
0x3E АМД х86-64
0x3F DSP-процессор Sony
0x40 Компания Digital Equipment Corp. PDP-10
0x41 Компания Digital Equipment Corp. PDP-11
0x42 Микроконтроллер Сименс FX66.
0x43 STMicroelectronics ST9+ 8/16-битный микроконтроллер
0x44 STMicroelectronics ST7 8-битный микроконтроллер
0x45 Микроконтроллер Motorola MC68HC16
0x46 Микроконтроллер Motorola MC68HC11
0x47 Микроконтроллер Motorola MC68HC08
0x48 Микроконтроллер Motorola MC68HC05
0x49 Кремниевая графика SVx
0x4A STMicroelectronics ST19 8-битный микроконтроллер
0x4B Цифровой ВАКС
0x4C 32-битный встроенный процессор Axis Communications
0x4D 32-битный встроенный процессор Infineon Technologies
0x4E 64-битный DSP-процессор Element 14
0x4F 16-битный DSP-процессор LSI Logic
0x8C Семейство TMS320C6000
0xAF МЦСТ Эльбрус e2k
0xB7 Arm 64-бит (Armv8/AArch64)
0xDC Зилог Z80
0xF3 РИСК-V
0xF7 Фильтр пакетов Беркли
0x101 МДЦ 65C816
0x102 ЛунгАрч
0x14 4 электронная_версия Установить на 1 для оригинальной версии ELF.
0x18 4 8 e_entry Это адрес памяти точки входа, с которой процесс начинает выполняться. Это поле имеет длину 32 или 64 бита, в зависимости от формата, определенного ранее (байт 0x04). Если файл не имеет связанной точки входа, то это значение равно нулю.
0x1C 0x20 4 8 e_phoff Указывает на начало таблицы заголовков программы. Обычно он следует за заголовком файла сразу за этим, создавая смещение 0x34 или 0x40 для 32- и 64-битных исполняемых файлов ELF соответственно.
0x20 0x28 4 8 e_shoff Указывает на начало таблицы заголовков разделов.
0x24 0x30 4 e_flags Интерпретация этого поля зависит от целевой архитектуры.
0x28 0x34 2 e_ehsize Содержит размер этого заголовка, обычно 64 байта для 64-битного формата и 52 байта для 32-битного формата.
0x2A 0x36 2 e_pentsize Содержит размер записи таблицы заголовков программы. Как объясняется ниже, обычно это 0x20 (32 бита) или 0x38 (64 бита).
0x2C 0x38 2 e_phnum Содержит количество записей в таблице заголовков программы.
0x2E 0x3A 2 e_shentsize Содержит размер записи таблицы заголовков разделов. Как поясняется ниже, обычно это 0x28 (32 бита) или 0x40 (64 бита).
0x30 0x3C 2 e_shnum Содержит количество записей в таблице заголовков разделов.
0x32 0x3E 2 e_shstrndx Содержит индекс записи таблицы заголовков разделов, содержащей имена разделов.
0x34 0x40 Конец заголовка ELF (размер).

Заголовок программы

[ редактировать ]

Таблица заголовков программы сообщает системе, как создать образ процесса. Он находится по смещению файла e_phoff и состоит из записи e_phnum , каждая имеет размер e_phentsize . Компоновка 32-битного ELF и 64-битного ELF немного отличается, потому что p_flags находятся в другом месте структуры по причинам выравнивания. Каждая запись структурирована следующим образом:

Заголовок программы [ 9 ]
Компенсировать Размер (байты) Поле Цель
32-битный 64-битная 32-битный 64-битная
0x00 4 p_type Определяет тип сегмента.
Ценить Имя Значение
0x00000000 PT_NULL Запись таблицы заголовков программы не используется.
0x00000001 PT_LOAD Загружаемый сегмент.
0x00000002 PT_DYNAMIC Информация о динамическом связывании.
0x00000003 PT_INTERP Информация переводчика.
0x00000004 PT_НОТЕ Вспомогательная информация.
0x00000005 PT_SHLIB Сдержанный.
0x00000006 PT_PHDR Сегмент, содержащий саму таблицу заголовков программы.
0x00000007 PT_TLS Шаблон Thread-Local Storage.
0x60000000 PT_LOOS Зарезервированный инклюзивный диапазон. Специфическая операционная система.
0x6FFFFFFFF PT_HIOS
0x70000000 PT_LOPROC Зарезервированный инклюзивный диапазон. Зависит от процессора.
0x7FFFFFFFF PT_HIPROC
0x04 4 p_flags Флаги, зависящие от сегмента (позиция для 64-битной структуры).
Ценить Имя Значение
0x1 PF_X Исполняемый сегмент.
0x2 PF_W Записываемый сегмент.
0x4 ПФ_Р Читаемый сегмент.
0x04 0x08 4 8 p_offset Смещение сегмента в файле-изображении.
0x08 0x10 4 8 п_ваддр Виртуальный адрес сегмента в памяти.
0x0C 0x18 4 8 p_paddr В системах, где важен физический адрес, зарезервирован для физического адреса сегмента.
0x10 0x20 4 8 p_files Размер сегмента изображения файла в байтах. Может быть 0.
0x14 0x28 4 8 p_memsz Размер сегмента в памяти в байтах. Может быть 0.
0x18 4 p_flags Флаги, зависящие от сегмента (позиция для 32-битной структуры). См. выше p_flags поле для определений флагов.
0x1C 0x30 4 8 p_align 0 и 1 не указывайте выравнивание. В противном случае должна быть положительная целая степень 2, с p_vadr приравнивание p_offset модуль p_align .
0x20 0x38 Конец заголовка программы (размер).

Заголовок раздела

[ редактировать ]
Компенсировать Размер (байты) Поле Цель
32-битный 64-битная 32-битный 64-битная
0x00 4 sh_name Смещение строки в разделе .shstrtab , представляющее имя этого раздела.
0x04 4 sh_type Определяет тип этого заголовка.
Ценить Имя Значение
0x0 SHT_NULL Запись таблицы заголовков разделов не используется
0x1 SHT_PROGBITS Данные программы
0x2 SHT_SYMTAB Таблица символов
0x3 SHT_STRTAB Строковый стол
0x4 SHT_RELA Записи о перемещении с дополнениями
0x5 SHT_HASH Хэш-таблица символов
0x6 SHT_DYNAMIC Информация о динамическом связывании
0x7 SHT_NOTE Примечания
0x8 SHT_NOBITS Программное пространство без данных (bss)
0x9 SHT_REL Записи о переезде, без дополнений
0x0A SHT_SHLIB Сдержанный
0x0B SHT_DYNSYM Таблица символов динамического компоновщика
0x0E SHT_INIT_ARRAY Массив конструкторов
0x0F SHT_END_ARRAY Массив деструкторов
0x10 SHT_PRINTED_ARray Массив преконструкторов
0x11 SHT_GROUP Группа разделов
0x12 SHT_SYMTAB_SHNDX Расширенные указатели разделов
0x13 SHT_NUM Количество определенных типов.
0x60000000 SHT_LOOS Запуск зависит от ОС.
... ... ...
0x08 4 8 sh_flags Определяет атрибуты раздела.
Ценить Имя Значение
0x1 SHF_WRITE записываемый
0x2 SHF_ALLOC Занимает память во время выполнения
0x4 SHF_EXECINSTR Исполняемый файл
0x10 SHF_MERGE Возможно, будут объединены
0x20 SHF_STRINGS Содержит строки с нулевым завершением
0x40 SHF_INFO_LINK 'sh_info' содержит индекс SHT.
0x80 SHF_LINK_ORDER Сохранять порядок после объединения
0x100 SHF_OS_NONCONFORMING Требуется нестандартная обработка, специфичная для ОС
0x200 SHF_GROUP Раздел является членом группы
0x400 СХФ_ТЛС Раздел содержит локальные данные потока
0x0FF00000 SHF_MASKOS зависит от ОС
0xF0000000 SHF_MASKPROC Зависит от процессора
0x4000000 SHF_ORDERED Особые требования к заказу (Solaris)
0x8000000 SHF_EXCLUDE Раздел исключается, если на него нет ссылки или он не выделен (Solaris)
0x0C 0x10 4 8 sh_addr Виртуальный адрес раздела в памяти для загружаемых разделов.
0x10 0x18 4 8 sh_offset Смещение раздела в файле-изображении.
0x14 0x20 4 8 sh_size Размер в байтах раздела в файле-изображении. Может быть 0.
0x18 0x28 4 ш_ссылка Содержит индекс связанного раздела. Это поле используется для нескольких целей, в зависимости от типа раздела.
0x1C 0x2C 4 sh_info Содержит дополнительную информацию о разделе. Это поле используется для нескольких целей, в зависимости от типа раздела.
0x20 0x30 4 8 sh_addralign Содержит необходимое выравнивание раздела. Это поле должно быть степенью двойки.
0x24 0x38 4 8 sh_entsize Содержит размер в байтах каждой записи для разделов, содержащих записи фиксированного размера. В противном случае это поле содержит ноль.
0x28 0x40 Конец заголовка раздела (размер).

Инструменты

[ редактировать ]
  • readelf — это двоичная утилита Unix, которая отображает информацию об одном или нескольких файлах ELF. Свободная программная реализация предоставляется GNU Binutils .
  • elfutils предоставляет альтернативные инструменты GNU Binutils исключительно для Linux. [ 10 ]
  • elfdump — это команда для просмотра информации ELF в файле ELF, доступная в Solaris и FreeBSD .
  • objdump предоставляет широкий спектр информации о файлах ELF и других форматах объектов. objdump использует библиотеку дескрипторов двоичных файлов в качестве серверной части для структурирования данных ELF.
  • Юникс file Утилита может отображать некоторую информацию о файлах ELF, включая архитектуру набора команд , для которой предназначен код в перемещаемом, исполняемом или общем объектном файле или для которого дамп ядра ELF. был создан

Приложения

[ редактировать ]

Unix-подобные системы

[ редактировать ]

Формат ELF заменил старые исполняемые форматы в различных средах. Он заменил a.out и COFF форматы в Unix-подобных операционных системах:

Внедрение не-Unix

[ редактировать ]

ELF также получил некоторое распространение в операционных системах, отличных от Unix, таких как:

Microsoft Windows также использует формат ELF, но только для своей подсистемы Windows для системы совместимости с Linux. [ 16 ]

Игровые консоли

[ редактировать ]

Некоторые игровые консоли также используют ELF:

Другие (операционные) системы, работающие на PowerPC и использующие ELF:

Мобильные телефоны

[ редактировать ]

Некоторые операционные системы для мобильных телефонов и мобильных устройств используют ELF:

Некоторые телефоны могут запускать файлы ELF с помощью патча , который добавляет ассемблерный код в основную прошивку . Эта функция известна как ELFPack в подпольной культуре моддинга . Формат файла ELF также используется с Atmel AVR (8-бит), AVR32. [ 21 ] и с архитектурой микроконтроллера Texas Instruments MSP430 . Некоторые реализации открытой прошивки также могут загружать файлы ELF, в первую очередь машинах реализация Apple, используемая почти во всех PowerPC , производимых компанией.

Технические характеристики

[ редактировать ]

Стандартная база Linux (LSB) дополняет некоторые из приведенных выше спецификаций для архитектур, в которых она указана. [ 22 ] Например, так обстоит дело с дополнением System V ABI, AMD64. [ 23 ] [ 24 ]

86открыть

[ редактировать ]

86open был проектом по формированию консенсуса по общему формату двоичных файлов для Unix и Unix-подобных операционных систем на общей , совместимой с ПК архитектуре x86 , чтобы побудить разработчиков программного обеспечения перейти на эту архитектуру. [ 25 ] Первоначальная идея заключалась в стандартизации небольшого подмножества Spec 1170, предшественника Единой спецификации UNIX , и библиотеки GNU C (glibc), чтобы обеспечить возможность запуска немодифицированных двоичных файлов в Unix-подобных операционных системах x86. Первоначально проект получил обозначение «Spec 150».

В конечном итоге был выбран формат ELF, а именно реализация ELF для Linux, после того как он оказался де-факто, стандартом поддерживаемым всеми задействованными поставщиками и операционными системами.

Группа начала обсуждения по электронной почте в 1997 году и впервые встретилась в офисе операции Санта-Крус 22 августа 1997 года.

В состав руководящего комитета входили Марк Юинг , Дион Джонсон, Эван Лейбович, Брюс Перенс , Эндрю Роуч, Брайан Уэйн Спаркс и Линус Торвальдс . Другими участниками проекта были Кит Бостик , Чак Крэнор, Майкл Дэвидсон, Крис Дж. Деметриу, Ульрих Дреппер, Дон Даггер, Стив Гинзбург, Джон «Бешеный пес» Холл , Рон Холт, Джордан Хаббард , Дэйв Дженсен, Кин Джонстон, Эндрю Джози, Роберт Липе, Бела Лубкин, Тим Марсланд, Грег Пейдж, Рональд Джо Рекорд, Тим Ракл, Джоэл Сильверстайн, Чиа-пи Тьен и Эрик Троан. Представленные операционные системы и компании включали BeOS , BSDI , FreeBSD , Intel , Linux , NetBSD , SCO и SunSoft .

Проект продвигался, и в середине 1998 года SCO приступила к разработке lxrun с открытым исходным кодом , уровня совместимости , позволяющего запускать двоичные файлы Linux на OpenServer , UnixWare и Solaris . SCO объявила об официальной поддержке lxrun на LinuxWorld в марте 1999 года. Sun Microsystems начала официальную поддержку lxrun для Solaris в начале 1999 года. [ 26 ] а позже перешел на интегрированную поддержку двоичного формата Linux через контейнеры Solaris для приложений Linux .

Поскольку BSD уже давно поддерживают двоичные файлы Linux (через уровень совместимости ), а основные поставщики x86 Unix добавили поддержку этого формата, проект решил, что Linux ELF — это формат, выбранный отраслью, и «объявил [d] о своем распаде» 25 июля 1999 г. [ 27 ]

FatELF: универсальные двоичные файлы для Linux

[ редактировать ]

FatELF — это расширение двоичного формата ELF, которое добавляет «толстого» двоичного кода . возможности [ 28 ] Он предназначен для Linux и других Unix-подобных операционных систем. В дополнение к абстракции архитектуры ЦП ( порядок байтов , размер слова , ЦП набор инструкций и т. д.) существует потенциальное преимущество абстракции программной платформы, например двоичные файлы, которые поддерживают несколько ABI версий ядра. По состоянию на 2021 год , FatELF не интегрирован в основное ядро ​​Linux. [ 29 ] [ 30 ] [ 31 ]

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б Спецификация стандарта интерфейса инструмента (TIS) исполняемого файла и формата связывания (ELF), версия 1.2 (май 1995 г.)
  2. ^ Стандарт интерфейса инструмента (TIS) Спецификация портативных форматов, версия 1.1 (октябрь 1993 г.)
  3. ^ Двоичный интерфейс приложения System V , версия 4.1 (18 марта 1997 г.)
  4. ^ «Заголовок ELF» . Sco.com. Июль 2000 года . Проверено 7 февраля 2014 г.
  5. ^ «LXR Linux/include/linux/elf.h» . Linux.нет . Проверено 27 апреля 2015 г.
  6. ^ «анонс glibc 2.12» .
  7. ^ «sourceware.org Git — glibc.git/blob — libc-abis» .
  8. ^ «sourceware.org Git — glibc.git/blob — sysdeps/gnu/ldsodefs.h» . Архивировано из оригинала 07 марта 2021 г. Проверено 28 октября 2019 г.
  9. ^ «Заголовок программы» . Sco.com. Июль 2000 года . Проверено 05 апреля 2017 г.
  10. ^ «Эльфутилс» . исходное программное обеспечение.org . Проверено 30 апреля 2017 г. .
  11. ^ «Двоичные форматы» . Архивировано из оригинала 31 марта 2019 г. Проверено 31 марта 2019 г.
  12. ^ «MinixReleases – Minix Wiki» . Wiki.minix3.org. Архивировано из оригинала 30 марта 2013 г. Проверено 19 января 2014 г.
  13. ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 15 сентября 2020 г. Проверено 19 октября 2016 г. {{cite web}}: CS1 maint: архивная копия в заголовке ( ссылка )
  14. ^ «GCCSDK – ОС RISC» . Рискос.инфо. 22 апреля 2012 г. Архивировано из оригинала 19 февраля 2014 г. Проверено 19 января 2014 г.
  15. ^ «Руководство программиста Guardian» (PDF) . Хьюлетт Паккард Энтерпрайз. Архивировано из оригинала (PDF) 30 мая 2018 г. Проверено 30 мая 2018 г. п. 44 заархивировано из оригинала 30 мая 2018 г.
  16. ^ Фоли, Мэри Джо. «Под капотом подсистемы Microsoft Windows для Linux» . ЗДНет . Проверено 19 августа 2016 г.
  17. ^ PlayStation Portable использует зашифрованный и перемещенный ELF: PSP
  18. ^ Формат исполняемого файла ОС Symbian.
  19. ^ Розен, Кеннет; Ведущий, Дуглас; Клее, Рэйчел; Росински, Ричард (2007). UNIX: Полный справочник (2-е изд.). МакГроу Хилл Профессионал. п. 707. ИСБН  9780071706988 . Проверено 8 июня 2017 г. Динамически подключаемые библиотеки также называются общими объектами (.so).
  20. ^ Томас, Ромен. «Форматы Android» . Кварковая лаборатория . Архивировано из оригинала 16 февраля 2023 года . Проверено 17 января 2023 г.
  21. ^ «Глава 4: Объектные файлы» , Двоичный интерфейс приложения System V , 26 октября 2009 г., e_machine
  22. ^ «Спецификации, ссылающиеся на LSB» . linuxfoundation.org . Проверено 27 апреля 2015 г.
  23. ^ «Формат исполняемых файлов и ссылок (ELF)» . linuxfoundation.org . Проверено 27 апреля 2015 г.
  24. ^ "Введение" . linuxfoundation.org . Проверено 27 апреля 2015 г.
  25. ^ Лейбович, Эван (23 декабря 1997 г.). «86Открытые часто задаваемые вопросы» . Архивировано из оригинала 11 марта 2007 г. Проверено 6 июня 2007 г.
  26. ^ Рекорд, Рональд (21 мая 1998 г.). «Бюллетень о статусе открытия в ШОС» . Архивировано из оригинала 8 декабря 2008 г. Проверено 6 мая 2008 г.
  27. ^ Лейбович, Эван (25 июля 1999 г.). «Проект The86open – финальное обновление» . Архивировано из оригинала 27 февраля 2007 г. Проверено 6 мая 2007 г.
  28. ^ Гордон, Райан. "fatelf-спецификация v1" . icculus.org . Проверено 25 июля 2010 г.
  29. ^ Гордон, Райан. «FatELF: Оказывается, неопределенность мне нравилась больше» . icculus.org . Проверено 13 июля 2010 г.
  30. ^ Холверда, Том (3 ноября 2009 г.). «Райан Гордон прекращает проект FatELF» . osnews.com . Проверено 5 июля 2010 г.
  31. ^ Брокмайер, Джо (23 июня 2010 г.). «САМ: Анатомия (предполагаемой) неудачи» . Еженедельные новости Linux . Проверено 6 февраля 2011 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 30edaccb599da00d19459749c06b3398__1721919480
URL1:https://arc.ask3.ru/arc/aa/30/98/30edaccb599da00d19459749c06b3398.html
Заголовок, (Title) документа по адресу, URL1:
Executable and Linkable Format - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)