Формат исполняемых файлов и ссылок (ELF) — это распространенный формат файлов, используемый для исполняемых файлов, общих библиотек и дампов ядра в Linux и других Unix-подобных операционных системах. Он был разработан в начале 1990-х годов Unix System Laboratories как часть интерфейса прикладного программирования Portable Operating System Interface (POSIX). Формат ELF используется для ядра Linux, GNU Tools и многих других программных компонентов Unix-подобных операционных систем.
Формат файла ELF содержит таблицы заголовков программ, таблицы заголовков разделов, таблицы сегментов и таблицы строк заголовков разделов. Цель этих таблиц — предоставить системному загрузчику и компоновщику информацию об исполняемом файле, общей библиотеке или объектном файле, в котором они содержатся. Таблицы заголовков программ описывают структуру памяти программы и порядок ее выполнения. Таблицы заголовков разделов и таблицы сегментов описывают, как каждый раздел программы должен располагаться в памяти. Таблица строк заголовка раздела предоставляет символическую информацию, что устраняет необходимость жесткого кодирования адресов в программе.
ELF также включает информацию о перемещении, которая позволяет связывать программу с другими библиотеками или модулями без необходимости перекомпиляции и повторной компоновки всего исполняемого файла. Динамическое связывание обеспечивает такие преимущества, как уменьшение использования памяти, более быстрая загрузка программ и большая гибкость для пользователя.
ELF — это четко определенный стандартизированный формат, обеспечивающий переносимость программ и библиотек между различными операционными системами. Это формат объектного кода, определенный в двоичном интерфейсе приложения System V (ABI). Гибкость формата ELF позволила ему стать лингва франка компьютерной индустрии, поскольку он обеспечивает независимый от платформы способ упаковки и развертывания программного обеспечения.