a.out es un formato de archivo utilizado en versiones anteriores de sistemas operativos de computadora similares a Unix para ejecutables , código objeto y, en sistemas posteriores, bibliotecas compartidas . Esta es una forma abreviada de " ensamblador de salida", el nombre de archivo de la salida de Ken Thompson 's PDP-7 ensamblador. [1] El término se aplicó posteriormente al formato del archivo resultante para contrastarlo con otros formatos de código objeto.
Extensión de nombre de archivo | ninguno, .o, .so |
---|---|
Desarrollado por | AT&T |
Tipo de formato | Bibliotecas binarias , ejecutables , de objetos y compartidas |
"a.out" sigue siendo el nombre de archivo de salida predeterminado para los ejecutables creados por ciertos compiladores y enlazadores cuando no se especifica ningún nombre de salida, aunque los archivos creados en realidad no están en el formato a.out. [2]
Historia
Un formato a.out para el PDP-7 , similar al formato a.out utilizado en el PDP-11 , apareció en la primera edición de UNIX. [3] Fue reemplazado por el formato COFF en AT&T Unix System V , que a su vez fue reemplazado por el formato ELF en System V Release 4 .
Aunque Berkeley Unix continuó usando el formato a.out durante algún tiempo, los sistemas BSD modernos han cambiado desde entonces a ELF. NetBSD / i386 cambió formalmente de a.out a ELF en su versión 1.5 (diciembre de 2000). FreeBSD / i386 cambió a ELF durante la transición de 2.2 a 3.0 (octubre de 1998).
MINIX 3 cambió a ELF en la versión 3.2.0.
Linux también usó a.out hasta el kernel 1.2 (marzo de 1995), cuando fue reemplazado por ELF también para esa plataforma. [4] (El soporte de ELF se agregó en el kernel experimental 1.1.52.) La transición de Linux a ELF fue más o menos forzada debido a la naturaleza compleja de construir a.out bibliotecas compartidas en esa plataforma, que incluía la necesidad de registrar las bibliotecas virtuales. espacio de direcciones en el que se encontraba la biblioteca con una autoridad central, ya que a.out ld.so en Linux no pudo reubicar las bibliotecas compartidas. [5] Los diversos tipos de BSD pudieron continuar usando binarios a.out mucho después de que Linux se viera obligado a cambiar a ELF, debido a la naturaleza algo más flexible del formato BSD a.out en comparación con el de Linux. [6] [7] El formato de archivo a.out en Linux quedó obsoleto con el lanzamiento del kernel de Linux 5.1. [8] [9]
Usar
Enlace
Depuración
El soporte de a.out para la información de depuración se realiza mediante el uso de entradas especiales en la tabla de símbolos llamadas puñaladas . El formato de puñaladas también se ha utilizado en muchas variaciones COFF y ELF .
Ver también
Referencias
- ^ Ritchie (1993) : "El ensamblador PDP-7 de Thompson superó incluso al DEC en simplicidad; evaluaba expresiones y emitía los bits correspondientes. No había bibliotecas, ni cargador ni editor de enlaces: se presentaba al ensamblador la fuente completa de un programa, y el archivo de salida, con un nombre fijo, que surgió era directamente ejecutable. (Este nombre, a.out, explica un poco la etimología de Unix; es la salida del ensamblador. Incluso después de que el sistema ganó un enlazador y un medio de especificando otro nombre explícitamente, se mantuvo como el resultado ejecutable predeterminado de una compilación) ".
- ^ Rupert Wood (8 de abril de 2002). "Qué hacer con a.out" . gcc-help (lista de correo) . Consultado el 28 de abril de 2007 .
- ^ Dennis Ritchie (3 de noviembre de 1971). a.out: salida del editor de enlaces y ensamblador (PDF) . Bell Labs . Consultado el 24 de noviembre de 2006 .
- ^ Daniel Barlow (14 de julio de 1996). "El Linux ELF HOWTO (v1.29)" . Archivado desde el original el 13 de julio de 2004 . Consultado el 28 de marzo de 2008 .
- ^ Ulrich Drepper (20 de agosto de 2006). "Cómo escribir bibliotecas compartidas" (PDF) . 4.0. Sección 1.1 (Un poco de historia). Archivado (PDF) desde el original el 16 de junio de 2007 . Consultado el 20 de junio de 2007 .
Al introducir bibliotecas compartidas, se tuvieron que tomar ciertas decisiones de diseño para trabajar con las limitaciones de a.out. (...) Por todas estas razones y más, Linux se convirtió desde el principio para usar ELF (Executable Linkage Format) como formato binario.
Cite journal requiere|journal=
( ayuda ) - ^ Eric Youngdale (1 de abril de 1995). "El formato de archivo de objeto ELF: Introducción" . Archivado desde el original el 10 de marzo de 2009 . Consultado el 6 de mayo de 2012 .
(...) no es imposible diseñar implementaciones de bibliotecas compartidas que funcionen con a.out. Las bibliotecas compartidas de Linux actuales son ciertamente un ejemplo; otro ejemplo son las bibliotecas compartidas de estilo SunOS que actualmente utiliza BSD-du-jour. Las bibliotecas compartidas de estilo SunOS contienen muchos de los mismos conceptos que las bibliotecas compartidas ELF (...)
- ^ "Mitos BSD" . Archivado desde el original el 17 de abril de 2007 . Consultado el 10 de abril de 2007 .
No había razones urgentes para cambiar antes. En particular, FreeBSD no tuvo (y no tiene) los problemas para construir bibliotecas compartidas que impulsaron la conversión de Linux de a.out a ELF.
- ^ "El kernel de Linux finalmente está desaprovechando el soporte de A.out - Phoronix" . www.phoronix.com . Consultado el 1 de septiembre de 2020 .
- ^ Borislav Petkov (5 de marzo de 2019). "x86: Desaprobar el soporte de a.out" . Consultado el 5 de marzo de 2019 .
Linux admite binarios ELF desde hace ~ 25 años. a.out coredumping se ha deteriorado de manera bastante significativa y necesitaría algunas correcciones para ponerlo en forma nuevamente, pero considerando que incluso las cadenas de herramientas no pueden crear ejecutables a.out en su configuración predeterminada, desaprovechemos el soporte a.out y lo eliminemos un par de versiones más tarde , en lugar de.
- Ritchie, Dennis M. (20 a 23 de abril de 1993). El desarrollo del lenguaje C . La Segunda Conferencia ACM SIGPLAN de Historia de los Lenguajes de Programación (HOPL-II) . Cambridge, MA: ACM . págs. 201–208. doi : 10.1145 / 154766.155580 . ISBN 0-89791-570-4. Consultado el 4 de noviembre de 2014 .Mantenimiento CS1: fecha y año ( enlace )
enlaces externos
- a.out página de manual para la versión 6 de Unix
- a.out página de manual para 2.11 BSD
- a.out página de manual para FreeBSD