Executable and Linkable Format
ELF (англ. Executable and Linking Format — Формат Виконання та Зв'язування) — формат двійкового файла, що може виконуватись, використовується в багатьох UNIX-подібних операціних системах, наприклад, в GNU-Linux і Solaris.
Структура
В заголовному файлі <elf.h> визначена структура, що описує ELF файли.
ELF файли бувають:
- виконуваними (normal executable files);
- об'єктними (relocatable object files);
- основними (core files);
- спільна бібліотека (shared libraries).
Кожен файл формату ELF має ELF-заголовок (ELF header) (обов'язково), потім йде таблиця програмних заголовків (program header table) чи таблиця заголовків секцій (section header table), або і те, і інше. ELF-заголовок обов'язково має нульове зміщення у файлі (тобто знаходиться на його початку). Зміщення у файлі для таблиці програмних заголовків і таблиці заголовків секцій визначається у ELF-заголовку.
ELF-заголовок, таблиця програмних заголовків, таблиця заголовків секцій описуються, як структури C, які включають в себе інші типи, що також визначені у заголовному файлі <elf.h>.
Нижче перераховані типи, які використовують для N-бітної архітектури (N = 32 чи 64):
ElfN_Addr Беззнакова адреса, uintN_t ElfN_Off Беззнакове зміщення, uintN_t ElfN_Section Беззнаковий індекс секції, uint16_t ElfN_Versym Unsigned version symbol information, uint16_t Elf_Byte Беззнаковий char ElfN_Half uint16_t ElfN_Sword int32_t ElfN_Word uint32_t ElfN_Sxword int64_t ElfN_Xword uint64_t
Поля цієї таблиці використовує завантажувач (ELF interpreter) для запису програми в оперативну пам'ять перед виконуванням.
Робота з ELF файлами
Для роботи з ELF файлами використовують бібліотеку libelf.
Посилання
- Як запускається функція main() в Linux (рос.)
- Як зробити Linux-програми меншими (рос.)
- Використання додаткових .ELF сегментів в QNX (рос.)
![]() |
Це незавершена стаття про інформаційні технології. Ви можете допомогти проєкту, виправивши або дописавши її. |