Расширение имени файла | нет, .axf , .bin , .elf , .o , .prx , .puff , .ko , .mod и .so |
---|---|
Магическое число | 0x7F 'E' 'L' 'F' |
Разработано | Лаборатории Unix System [1] : 3 |
Тип формата | Двоичный , исполняемый файл , объект , разделяемая библиотека , дамп ядра |
Контейнер для | Множество исполняемых двоичных форматов |
В вычислении , то исполняемый файл и Linkable Format [ править ] ( ELF , ранее носившая название Extensible Linking Format ), является общим стандартом формат файла для исполняемых файлов, объектного кода , разделяемых библиотек , а также основных свалках . Впервые опубликовано в спецификации для двоичного интерфейса приложения (ABI) версии операционной системы Unix под названием System V Release 4 (SVR4), [2] и позже в стандарте интерфейса инструментов, [1]он был быстро принят различными поставщиками систем Unix . В 1999 году он был выбран в качестве стандартного формата двоичных файлов для Unix и Unix-подобных систем на процессорах x86 проектом 86open .
По своей конструкции формат ELF является гибким, расширяемым и кроссплатформенным . Например, он поддерживает разные порядки следования байтов и размеры адресов, поэтому он не исключает какой-либо конкретный центральный процессор (ЦП) или архитектуру набора команд . Это позволило использовать его во многих операционных системах на различных аппаратных платформах .
Макет файла [ править ]
Каждый файл ELF состоит из одного заголовка ELF, за которым следуют данные файла. Данные могут включать:
- Таблица заголовков программы, описывающая ноль или более сегментов памяти
- Таблица заголовков разделов, описывающая ноль или более разделов
- Данные, на которые ссылаются записи в таблице заголовков программы или таблице заголовков разделов
Сегменты содержат информацию, необходимую для выполнения файла во время выполнения, а разделы содержат важные данные для связывания и перемещения. Любой байт во всем файле может принадлежать не более чем одному разделу, и могут возникать бесхозные байты, не принадлежащие ни одному разделу.
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 3e 00 01 00 00 00 c5 48 40 00 00 00 00 00 |..>......H@.....|
Пример шестнадцатеричного дампа заголовка файла ELF [3]
Заголовок файла [ править ]
Заголовок ELF определяет, использовать ли 32-битные или 64-битные адреса. Заголовок содержит три поля, на которые влияет этот параметр и смещает другие поля, следующие за ними. Заголовок ELF имеет длину 52 или 64 байта для 32-битных и 64-битных двоичных файлов соответственно.
Компенсировать | Размер (байты) | Поле | Цель | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 целевой операционной системы .
Часто устанавливается | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | Определяет тип объектного файла.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x12 | 2 | e_machine | Определяет целевую архитектуру набора инструкций . Вот несколько примеров:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x14 | 4 | e_version | Установите значение 1 для исходной версии ELF. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x18 | 4 | 8 | e_entry | Это адрес в памяти точки входа, с которой начинается выполнение процесса. Это поле имеет длину 32 или 64 бита в зависимости от формата, определенного ранее. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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_phentsize | Содержит размер записи таблицы заголовков программы. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x2C | 0x38 | 2 | e_phnum | Содержит количество записей в таблице заголовков программы. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x2E | 0x3A | 2 | e_shentsize | Содержит размер записи таблицы заголовков раздела. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x30 | 0x3C | 2 | е_шнум | Содержит количество записей в таблице заголовков раздела. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x32 | 0x3E | 2 | e_shstrndx | Содержит индекс записи таблицы заголовков раздела, содержащей имена разделов. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x34 | 0x40 | Конец заголовка ELF (размер) |
Заголовок программы [ править ]
Таблица заголовка программы сообщает системе, как создать образ процесса. Он находится по смещению файла e_phoff и состоит из записей e_phnum , каждая из которых имеет размер e_phentsize . Макет немного отличается в 32-битном ELF от 64-битного ELF, потому что p_flags находятся в другом месте структуры по причинам выравнивания. Каждая запись структурирована следующим образом:
Компенсировать | Размер (байты) | Поле | Цель | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32-битный | 64-битный | 32-битный | 64-битный | ||||||||||||||||||||||||||||||||||||||
0x00 | 4 | p_type | Определяет тип сегмента.
От PT_LOOS до PT_HIOS (от PT_LOPROC до PT_HIPROC ) - это включающие зарезервированные диапазоны для семантики, специфичной для операционной системы (процессора). | ||||||||||||||||||||||||||||||||||||||
0x04 | 4 | p_flags | Флаги, зависящие от сегмента (позиция для 64-битной структуры). | ||||||||||||||||||||||||||||||||||||||
0x04 | 0x08 | 4 | 8 | p_offset | Смещение сегмента в изображении файла. | ||||||||||||||||||||||||||||||||||||
0x08 | 0x10 | 4 | 8 | p_vaddr | Виртуальный адрес сегмента в памяти. | ||||||||||||||||||||||||||||||||||||
0x0C | 0x18 | 4 | 8 | p_paddr | В системах, где важен физический адрес, зарезервирован для физического адреса сегмента. | ||||||||||||||||||||||||||||||||||||
0x10 | 0x20 | 4 | 8 | p_filesz | Размер сегмента изображения в байтах. Может быть 0. | ||||||||||||||||||||||||||||||||||||
0x14 | 0x28 | 4 | 8 | p_memsz | Размер сегмента в памяти в байтах. Может быть 0. | ||||||||||||||||||||||||||||||||||||
0x18 | 4 | p_flags | Сегментно-зависимые флаги (позиция для 32-битной структуры). | ||||||||||||||||||||||||||||||||||||||
0x1C | 0x30 | 4 | 8 | p_align | 0 и не 1 указывайте выравнивания. В противном случае должна быть положительная интегральная степень 2, где p_vaddr приравнивается к модулю p_offset p_align . | ||||||||||||||||||||||||||||||||||||
0x20 | 0x38 | Заголовок конца программы (размер) |
Заголовок раздела [ править ]
Компенсировать | Размер (байты) | Поле | Цель | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32-битный | 64-битный | 32-битный | 64-битный | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x00 | 4 | sh_name | Смещение строки в разделе .shstrtab , представляющей имя этого раздела. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x04 | 4 | sh_type | Определяет тип этого заголовка.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x08 | 4 | 8 | sh_flags | Определяет атрибуты раздела.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x0C | 0x10 | 4 | 8 | sh_addr | Виртуальный адрес раздела в памяти для загружаемых разделов. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x10 | 0x18 | 4 | 8 | sh_offset | Смещение участка в изображении файла. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x14 | 0x20 | 4 | 8 | sh_size | Размер раздела в образе файла в байтах. Может быть 0. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x18 | 0x28 | 4 | sh_link | Содержит индекс связанного раздела. Это поле используется для нескольких целей в зависимости от типа раздела. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
Утилита Unix может отображать некоторую информацию о файлах ELF, включая архитектуру набора инструкций, для которой предназначен код в перемещаемом, исполняемом или совместно используемом объектном файле или на котором был создан дамп ядра ELF .
Приложения [ править ]
Unix-подобные системы [ править ]
Эта статья представлена в виде списка , но может читаться лучше как проза . Ноябрь 2016 г. ) ( |
Формат ELF заменил старые исполняемые форматы в различных средах. Он заменил форматы a.out и COFF в Unix-подобных операционных системах:
- Linux
- Solaris / Illumos
- IRIX
- FreeBSD [11]
- NetBSD
- OpenBSD
- Редокс
- DragonFly BSD
- Слог
- HP-UX (за исключением 32-разрядных программ PA-RISC, которые продолжают использовать SOM )
- QNX Neutrino
- МИНИКС [12]
Использование не-Unix [ править ]
ELF также получил некоторое распространение в операционных системах, отличных от Unix, таких как:
- OpenVMS в версиях Itanium и amd64 [13]
- BeOS Revision 4 и более поздние версии для компьютеров на базе x86 (где он заменил формат Portable Executable ; версия PowerPC осталась с Preferred Executable Format )
- Haiku , повторная реализация BeOS с открытым исходным кодом
- ОС RISC [14]
- Stratus VOS в версиях PA-RISC и x86
- Юбилейное обновление Windows 10 с использованием подсистемы Windows для Linux . [15] [16]
- SkyOS
- Фуксия ОС
- Z / TPF
- ОС HPE NonStop [17]
- Деос
Игровые консоли [ править ]
Некоторые игровые консоли также используют ELF:
- PlayStation Portable , [18] PlayStation Vita , PlayStation 2 , PlayStation 3 , PlayStation 4 , PlayStation 5
- GP2X
- Dreamcast
- Gamecube
- Wii
- Wii U
PowerPC [ править ]
Другие (операционные) системы, работающие на PowerPC , использующие ELF:
- AmigaOS 4 , исполняемый файл ELF, заменил предыдущий Extended Hunk Format (EHF), который использовался на Amigas, оснащенных платами расширения процессора PPC.
- MorphOS
- AROS
Мобильные телефоны [ править ]
Некоторые операционные системы для мобильных телефонов и мобильных устройств используют ELF:
- Symbian OS v9 использует формат E32Image [19] , основанный на формате файла ELF;
- Sony Ericsson , например, W800i , W610 , W300 и т. Д.
- Siemens , платформы SGOLD и SGOLD2: от Siemens C65 до S75 и BenQ-Siemens E71 / EL71 ;
- Motorola , например, E398, SLVR L7 , v360, v3i (и все телефоны LTE2, к которым применен патч).
- Bada , например, Samsung Wave S8500 .
- Телефоны или планшеты Nokia с ОС Maemo или Meego, например Nokia N900 .
- Android использует библиотеки ELF .so (общий объект [20] ) для собственного интерфейса Java . В среде выполнения Android (ART), которая используется по умолчанию с Android 5.0 «Lollipop» , все приложения при установке компилируются в собственные двоичные файлы ELF.
Некоторые телефоны могут запускать файлы ELF с помощью патча, который добавляет код сборки в основную прошивку , что является функцией, известной как ELFPack в культуре подпольного моддинга . Формат файла ELF также используется в архитектурах микроконтроллеров Atmel AVR (8-бит), AVR32 [21] и Texas Instruments MSP430 . Некоторые реализации Open Firmware также могут загружать файлы ELF, в первую очередь реализация Apple , используемая почти во всех машинах PowerPC, производимых компанией.
Технические характеристики [ править ]
- Общий:
- Двоичный интерфейс приложений System V, версия 4.1 (18 марта 1997 г.)
- Обновление System V ABI (октябрь 2009 г.)
- AMD64 :
- Система V ABI, приложение AMD64
- ARM :
- ELF для архитектуры ARM
- IA-32 :
- System V ABI, Дополнение к архитектуре Intel386 для процессоров
- IA-64 :
- Соглашения по программному обеспечению Itanium и руководство по времени выполнения (сентябрь 2000 г.)
- M32R :
- M32R ELF ABI Supplement Version 1.2 (2004-08-26)
- MIPS :
- System V ABI, Дополнение к процессору MIPS RISC
- Документация MIPS EABI (11.06.2003)
- Motorola 6800 :
- Motorola 8- и 16-битный встроенный ABI
- PA-RISC :
- Дополнение ELF для PA-RISC версии 1.43 (6 октября 1997 г.)
- PowerPC :
- Система V ABI, Дополнение к PPC
- 32- разрядная реализация двоичного интерфейса встроенного приложения PowerPC (01.10.1995)
- 64-битное приложение к бинарному интерфейсу приложения PowerPC ELF, версия 1.9 (2004)
- SPARC :
- Система V ABI, Дополнение к SPARC
- S / 390 :
- S / 390 32-битное приложение ELF ABI
- zСерия :
- zSeries 64bit ELF ABI Supplement
- Symbian OS 9:
- Формат файла E32Image в Symbian OS 9
Standard Base Linux (LSB) дополняет некоторые из вышеупомянутых спецификаций для архитектур , в которых он указан. [22] Например, это относится к System V ABI, AMD64 Supplement. [23] [24]
86open [ править ]
86open был проектом по формированию консенсуса по общему формату двоичного файла для Unix и Unix-подобных операционных систем на общей архитектуре x86, совместимой с ПК , чтобы побудить разработчиков программного обеспечения перейти на эту архитектуру. [25] Первоначальная идея заключалась в том, чтобы стандартизировать небольшое подмножество Spec 1170, предшественника Single UNIX Specification , и библиотеки GNU C (glibc), чтобы немодифицированные двоичные файлы могли работать в Unix-подобных операционных системах x86. Первоначально проект получил обозначение «Спец 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 . По состоянию на 2 марта 2021 года FatELF не интегрирован в основное ядро Linux. [29] [30] [31][Обновить]
См. Также [ править ]
- Бинарный интерфейс приложения
- Сравнение форматов исполняемых файлов
- DWARF - формат для отладки данных
- Стандарт двоичной совместимости Intel
- Portable Executable - формат, используемый Windows
- vDSO - виртуальный DSO
- Позиционно-независимый код
Ссылки [ править ]
- ^ a b Стандарт интерфейса инструментов (TIS), исполняемый файл и формат связывания (ELF), версия 1.2 (май 1995 г.)
- ^ System V Application Binary Interface Edition 4.1 (18 марта 1997 г.)
- ^ "Доступные лексеры - Пигменты" . pygments.org .
- ^ "Заголовок ELF" . Sco.com. Июль 2000 . Проверено 7 февраля 2014 .
- ^ "LXR linux / include / linux / elf.h" . linux.no . Проверено 27 апреля 2015 года .
- ^ "glibc 2.12 анонс" .
- ^ "sourceware.org Git - glibc.git / blob - libc-abis" .
- ^ "sourceware.org Git - glibc.git / blob - sysdeps / gnu / ldsodefs.h" .
- ^ «Заголовок программы» . Sco.com. Июль 2000 . Проверено 5 апреля 2017 .
- ^ "elfutils" . sourceware.org . Проверено 30 апреля 2017 года .
- ^ «Двоичные форматы» .
- ^ "MinixReleases - Minix Wiki" . Wiki.minix3.org. Архивировано из оригинала на 2013-03-30 . Проверено 19 января 2014 .
- ^ https://vmssoftware.com/pdfs/State_of_Port_20160906.pdf
- ^ "GCCSDK - ОС RISC" . Riscos.info. 2012-04-22 . Проверено 19 января 2014 .
- ^ «Объявление о выпуске Windows 10 Insider Preview Build 14316» . Блог Windows Experience . 2016-04-06 . Проверено 10 апреля 2016 .
- ^ Фоли, Мэри Джо. «Под капотом подсистемы Microsoft Windows для Linux | ZDNet» . ZDNet . Проверено 19 августа 2016 .
- ^ "Руководство программиста Guardian" (PDF) . Hewlett Packard Enterprise. Архивировано из оригинального (PDF) 30 мая 2018 года . Проверено 30 мая 2018 . п. 44 архивировано из оригинала на 2018-5-30
- ^ PlayStation Portable использует зашифрованный и перемещенный файл ELF: PSP
- ^ Формат исполняемого файла ОС Symbian
- ^ Розен, Кеннет; Ведущий, Дуглас; Клее, Рэйчел; Розински, Ричард (2007). UNIX: Полный справочник (2-е изд.). McGraw Hill Professional. п. 707. ISBN. 9780071706988. Проверено 8 июня 2017 .
Динамически подключаемые библиотеки также называются общими объектами (.so).
- ^ «Глава 4: Объектные файлы» , Двоичный интерфейс приложения System V , 2009-10-26, e_machine
- ^ "Технические характеристики, указанные в LSB" . linuxfoundation.org . Проверено 27 апреля 2015 года .
- ^ «Исполняемый и связывающий формат (ELF)» . linuxfoundation.org . Проверено 27 апреля 2015 года .
- ^ «Введение» . linuxfoundation.org . Проверено 27 апреля 2015 года .
- ^ Лейбович, Evan (1997-12-23). «86Открытые часто задаваемые вопросы» . Архивировано из оригинала на 2007-03-11 . Проверено 6 июня 2007 .
- ^ Запись, Рональд (1998-05-21). «Бюллетень о статусе 86open в ШОС» . Архивировано из оригинала на 2008-12-08 . Проверено 6 мая 2008 .
- ^ Лейбович, Evan (1999-07-25). «Проект The86open - Финальное обновление» . Архивировано из оригинала на 2007-02-27 . Проверено 6 мая 2007 .
- ^ Гордон, Райан. "Fatelf-спецификация v1" . icculus.org . Проверено 25 июля 2010 .
- ^ Гордон, Райан. «FatELF: Оказывается, мне больше нравилась неопределенность» . icculus.org . Проверено 13 июля 2010 .
- ^ Holwerda, Том (2009-11-03). «Райан Гордон останавливает проект FatELF» . osnews.com . Проверено 5 июля 2010 .
- ^ Brockmeier, Джо (23 июня 2010). «СЕБЯ: Анатомия (предполагаемой) неудачи» . Еженедельные новости Linux . Проверено 6 февраля 2011 .
Дальнейшее чтение [ править ]
- Левин, Джон Р. (2000) [октябрь 1999]. Линкеры и загрузчики . Серия Морган Кауфманн в программной инженерии и программировании (1-е изд.). Сан-Франциско, США: Морган Кауфманн . ISBN 1-55860-496-0. OCLC 42413382 . Архивировано 05 декабря 2012 года . Проверено 12 января 2020 .Код: [1] [2] Ошибки: [3]
- Дреппер, Ульрих ( 20 августа 2006 г. ). «Как писать общие библиотеки» (PDF) . 4.0 . Проверено 20 июня 2007 . Цитировать журнал требует
|journal=
( помощь ) - Незаметный герой: трудолюбивый ELF Питера Зеебаха, 20 декабря 2005 г., архивировано с оригинала 24 февраля 2007 г.
- LibElf и GElf - Библиотека для управления файлами ELf на Wayback Machine (архив 25 февраля 2004 г.)
- Формат объектного файла ELF от Dissection Эрика Янгдейла (1995-05-01)
- Учебник Whirlwind по созданию действительно крохотных исполняемых файлов ELF для Linux от Брайана Райтера
- Перенос ELF в неперемещаемые объекты , Жюльен Ванег (13-08-2003)
- Встроенная отладка ELF без ptrace командой ELFsh (2005-08-01)
- Исследование загрузки и релокации в формате ELF , Пэт Бейрн (1999-08-03)
Внешние ссылки [ править ]
- Справочник FreeBSD: Двоичные форматы (заархивированная версия)
- Страница справочника FreeBSD elf (5)
- NetBSD ELF FAQ
- Страница справочника Linux elf (5)
- Руководство по компоновщику и библиотекам Oracle Solaris
- Проект ERESI: реверс-инжиниринг операционных систем на базе ELF
- Linux Today статья от 86открыта 26 июля 1999 г.
- Объявление 86open в списке рассылки Debian Announce 10 октября 1997 г., Брюс Перенс
- Заявление Ульриха Дреппера (PDF) в документе «Группа SCO против IBM» , 19 сентября 2006 г.
- 86open и обсуждение ELF на Groklaw , 13 августа 2006 г.