A.out
is a file format used in older versions of Unix-like computer operating systems for executables, object code, and, in later systems, shared libraries. This is an abbreviated form of "assembler output", the filename of the output of Ken Thompson's PDP-7 assembler. The term was subsequently applied to the format of the resulting file to contrast with other formats for object code.
"" remains the default output file name for executables created by certain compilers and linkers when no output name is specified, even though the created files actually are not in the a.out format, but often in ELF.
Support for the format was deprecated in Linux kernel version 5.1, and support for the format was removed across the 5.18 and 5.19 kernel releases.
History
An format for the PDP-7, similar to the format used on the PDP-11, appeared in the first edition of UNIX.It was superseded by the COFF format in AT&T Unix System V, which was in turn superseded by the ELF format in System V Release 4. files are identified by the magic numbers with octal codes 0407, 0410 or 0413.
MINIX 3 switched to ELF in the 3.2.0 release of February 2012.
Linux also used only until kernel 1.2, when it was superseded by ELF for that platform as well. ELF support was added in the experimental 1.1.52 kernel. Linux's transition to ELF was more or less forced due to the complex nature of building shared libraries on that platform, which included the need to register the virtual address space at which the library was located with a central authority, as the in Linux was unable to relocate shared libraries.
Because modern compiler toolchains did not produce files, and facilities for the format were suffering from bit rot, the file format on Linux was deprecated with the release of the kernel version 5.1. Support for the format was removed from the DEC Alpha and Motorola 68000 architectures, which were the last architectures that used it, in version 5.18. Support for in the x86 architecture was removed completely in version 5.19.
Though Berkeley Unix continued using the format for some time, modern BSD systems have since switched to ELF. NetBSD/i386 switched formally from to ELF in its 1.5 release in December 2000. FreeBSD/i386 switched to ELF as a standard format during the 2.2 to 3.0 transition in 1998, however support for remained in the system. The various BSD flavors were able to continue using binaries long after Linux was forced to switch to ELF, due to the somewhat more flexible nature of the BSD format compared to that of Linux.