For faster navigation, this Iframe is preloading the Wikiwand page for Executable and Linkable Format.

Executable and Linkable Format

ELF


Capa de un archivo ELF
Desarrollador
Unix System Laboratories
Información general
Extensión de archivo none, .axf, .bin, .o, .so, .elf, .prx, .puff, .ko, .mod
Número mágico 0x7F 'E' 'L' 'F'
Tipo de formato Binario, ejecutable, objeto, biblioteca compartida, volcado de memoria
Contenido por Algunos formatos binarios ejecutables
Formato abierto ?

En informática, el formato Extensible Linkable Format (ELF, anteriormente llamado Extensible Linking Format), es un formato de archivo estándar común para archivos ejecutables, código objeto, bibliotecas compartidas y volcados de núcleo. Publicado por primera vez en la especificación para la Interfaz binaria de aplicaciones (ABI) de la versión del sistema operativo Unix llamada System V Release 4 (SVR4), y más tarde en el Tool Interface Standard, fue rápidamente aceptado entre los diferentes proveedores de sistemas Unix. En 1999, fue elegido como el formato de archivo binario estándar para Unix y sistemas Unix-like en procesadores x86 por el proyecto 86open.

Por diseño, el formato ELF es flexible, extensible y multiplataforma. Por ejemplo, admite diferentes endianness y tamaños de dirección, por lo que no excluye ninguna unidad central de procesamiento (CPU) o arquitectura del conjunto de instrucciones. Esto ha permitido que sea adoptado por muchos sistemas operativos diferentes en muchas plataformas de hardware diferentes.

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@.....|

—Ejemplo hex dump de un encabezado de archivo ELF[1]

Estructura

Dentro del formato ELF podemos distinguir varias partes.[2]

En primer lugar la cabecera ELF, que contiene información general sobre el ejecutable. En él se indican las posiciones de las tablas de cabeceras de sección y cabeceras de programa.

Cada una de estas cabeceras indican dónde se encuentran los datos de cada una de las secciones. Las cabeceras de programa definen las regiones del ejecutable o bibliotecas que es necesario cargar para crear la imagen del proceso e iniciar su ejecución. Las cabeceras de sección contienen información importante para el enlazado y la relocalización.

Las secciones tienen nombres que suelen coincidir en todos los sistemas. Ejemplos de secciones son:

.data Contiene datos inicializados del programa.

.debug Contiene información para ayudar a la depuración.

.ctors Contiene punteros a constructores de C++.

.dtors Contiene punteros a destructores de C++.

.dynamic Contiene información relevante para el enlazado dinámico.

.dynsym Contiene la tabla de símbolos para el enlazado dinámico.

.fini Contiene código de finalización del programa.

.init Contiene código de inicialización del programa.

.shstrtab Contiene una tabla de strings con los nombres de las secciones.

.strtab Contiene una tabla de strings normalmente usada para nombrar los elementos de la tabla de símbolos.

.symtab Contiene una tabla de símbolos.

.text Contiene la parte ejecutable de un programa.

Herramientas

  • readelf es un programa UNIX que muestra la información sobre un archivo ELF.

Está implementado bajo licencia GPL en las GNU Binary Utilities.

Véase también

Referencias

  1. «Available lexers — Pygments». 
  2. Boelen, Michael (1 de julio de 2018). «The 101 of ELF files on Linux: Understanding and Analysis» (html). Linux Audit (en inglés). Archivado desde el original el 28 de abril de 2019. Consultado el 16 de mayo de 2019. «A common misconception is that ELF files are just for binaries or executables. We already have seen they can be used for partial pieces (object code). Another example is shared libraries or even core dumps (those core or a.out files). The ELF specification is also used on Linux for the kernel itself and Linux kernel modules.» 
{{bottomLinkPreText}} {{bottomLinkText}}
Executable and Linkable Format
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?