¿Cuál es la diferencia entre los archivos ELF y los archivos bin?


Las imágenes finales producidas por compliers contienen tanto el archivo bin como el archivo ELF de formato de cargador extendido ,cuál es la diferencia entre los dos , especialmente la utilidad del archivo ELF.

 75
Author: Vadim Kotov, 2010-03-11

3 answers

Un archivo Bin es un archivo binario puro sin arreglos de memoria o reubicaciones, lo más probable es que tenga instrucciones explícitas para cargarse en una dirección de memoria específica. Mientras....

Los archivos ELF son un Formato Ejecutable Enlazable que consiste en una búsqueda de símbolos y una tabla reubicable, es decir, se puede cargar en cualquier dirección de memoria por el núcleo y automáticamente, todos los símbolos utilizados, se ajustan al desplazamiento de esa dirección de memoria en la que se cargó. Normalmente archivos ELF tener un número de secciones, tales como 'datos', 'texto', 'bss', para nombrar few...it está dentro de esas secciones donde el tiempo de ejecución puede calcular dónde ajustar dinámicamente las referencias de memoria del símbolo en tiempo de ejecución.

 72
Author: t0mm13b,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-11 17:30:44

Un archivo bin es solo los bits y bytes que van a la rom o una dirección particular desde la que ejecutará el programa. Puede tomar estos datos y cargarlos directamente como es, necesita saber cuál es la dirección base, ya que normalmente no está allí.

Un archivo elf contiene la información bin pero está rodeado de mucha otra información, posible información de depuración, símbolos, puede distinguir el código de los datos dentro del binario. Permite más de un fragmento de datos binarios (cuando volcar uno de estos a un bin se obtiene un gran archivo bin con datos de relleno para rellenarlo en el siguiente bloque). Le indica cuánto binario tiene y cuántos datos bss hay que inicializar a ceros (las herramientas gnu tienen problemas para crear correctamente los archivos bin).

El formato de archivo elf es un estándar, arm publica sus mejoras/variaciones sobre el estándar. Recomiendo que todo el mundo escriba un programa de análisis de elf para entender lo que hay allí, no se moleste con una biblioteca, es bastante simple para simplemente usar la información y las estructuras en la especificación. Ayuda a superar los problemas de gnu en general creando .archivos bin, así como la depuración de scripts enlazadores y otras cosas que pueden ayudar a estropear su salida bin o elf.

 28
Author: old_timer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-14 15:05:02

Algunos recursos:

  1. ELFO para el BRAZO architecture
    http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044d/IHI0044D_aaelf.pdf
  2. ELFO de wiki
    http://en.wikipedia.org/wiki/Executable_and_Linkable_Format

El formato ELF es generalmente la salida predeterminada de la compilación. si utiliza GNU tool chains, puede traducirlo a formato binario utilizando objcopy, como:

  arm-elf-objcopy -O binary [elf-input-file] [binary-output-file]

O usando la utilidad fromELF (construida en la mayoría de los IDE como ANUNCIOS sin embargo):

 fromelf -bin -o [binary-output-file] [elf-input-file]
 24
Author: wenlujon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-12 07:32:57