Executable and Link Format (ELF) es un formato de archivo estándar común para ejecutables, código objeto, bibliotecas compartidas y volcados de núcleo en sistemas operativos tipo Unix. Es el formato de archivo binario estándar utilizado por varios procesadores diferentes, incluidos IBM, AMD, Intel, ARM y MC68K, y se utiliza en casi todas las versiones de Unix, incluidos Linux, Solaris, HP-UX y AIX. ELF fue desarrollado originalmente por Unix System Laboratories en 1993 como parte de su implementación de System V Release 4 (SVR ), y ahora está soportado por todos los principales sistemas operativos tipo Unix.
ELF es un formato de archivo jerárquico y modular que incluye elementos básicos como cabecera, segmentos de programa, secciones, tablas de símbolos y tablas de reubicación. La cabecera consta de campos específicos de la máquina que proporcionan información sobre cómo debe cargarse y gestionarse el ejecutable. Los segmentos de programa contienen instrucciones (código) y zonas de memoria para almacenar datos. Las secciones proporcionan información más detallada sobre el contenido del archivo, incluidas las reubicaciones de segmentos de programa y datos y las definiciones de símbolos. Las tablas de símbolos enumeran todos los símbolos (incluidas las variables globales y estáticas) del módulo, y las tablas de reubicación contienen información detallada sobre la reubicación de direcciones durante la carga del archivo.
ELF proporciona flexibilidad para la compatibilidad binaria entre distintas arquitecturas de procesador y ofrece un buen nivel de protección del código y los datos frente a modificaciones no autorizadas. Además, las características de ELF facilitan la compartición de programas entre distintas arquitecturas de CPU y sistemas operativos. Además, el formato ELF también ofrece funciones importantes para los sistemas operativos modernos, como la posibilidad de resolver símbolos externos y de compartir código, lo que evita la duplicación de código ejecutable.
ELF sigue siendo ampliamente utilizado, aunque otros formatos de archivo de objetos, como Mach-O, están ganando popularidad. A pesar de algunas de las ventajas de otros formatos de archivo, ELF sigue siendo el principal estándar de formato de archivo ejecutable y de objetos compartidos, con soporte en Linux, Solaris y otros sistemas operativos tipo Unix.