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-7assembler. The term was subsequently applied to the format of the resulting file to contrast with other formats for object code. "a.out" 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.
History
An a.out format for the PDP-7, similar to the a.out 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. Though Berkeley Unix continued using the a.out format for some time, modern BSD-systems have since switched to ELF. NetBSD/i386 switched formally from a.out to ELF in its 1.5 release. FreeBSD/i386 switched to ELF during the 2.2 to 3.0 transition. MINIX 3 switched to ELF in the 3.2.0 release. Linux also used a.out until kernel 1.2, when it was superseded by ELF for that platform as well. Linux's transition to ELF was more or less forced due to the complex nature of buildinga.out 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 a.out ld.so in Linux was unable to relocate shared libraries. The various BSD flavors were able to continue using a.out binaries long after Linux was forced to switch to ELF, due to the somewhat more flexible nature of the BSD a.out format compared to that of Linux. The final deprecation of the a.out file format on Linux will take place with the release 5.1 of the Linux Kernel.
Use
Linking
Debugging
The a.out support for debuginformation is done through the use of special entries in the symbol table called stabs. The stabs format has also been used in many COFF and ELF variations.