Ця статтяпотребує додатковихпосилань на джерела для поліпшення їїперевірності. Будь ласка, допоможітьудосконалити цю статтю, додавши посилання нанадійні (авторитетні) джерела. Зверніться насторінку обговорення за поясненнями та допоможіть виправити недоліки. Матеріал без джерел може бутипіддано сумніву та вилучено.(липень 2016) |
ELF (англ.Executable and Linkable Format —формат виконання та зв'язування, раніше звавсяангл.Extensible Linking Format —розширюваний зв'язувальний формат) — форматвиконуваного файла,об'єктних модулів, розділювальних бібліотек тасистемних дампів; використовується в багатьохUnix-подібних операційних системах, наприклад, вLinux,FreeBSD іSolaris.
ELF формат був розроблений і опублікованийUNIX System Laboratories (USL), як частинадвійкового бінарного інтерфейсу (ABI).Комітет з стандартів інтерфейсу (TIS) визначив ELF, як стандарт для портативних об'єктних файлів, що працюють на 32-бітних архітектурах компаніїIntel, для різних операційних систем.
Взаголовному файлі<elf.h> визначена структура, що описує ELF файли.
ELF файли бувають:
Кожен файл формату 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 файлами використовують бібліотеку libelf.
Також можна використовувати програми з пакетуGNU Binutils.
| Це незавершена стаття проінформаційні технології. Ви можетедопомогти проєкту,виправивши або дописавши її. |
| Це незавершена стаття проопераційні системи. Ви можетедопомогти проєкту,виправивши або дописавши її. |