Retrounixcken-thompsondennis-ritchiegcc
C Compilers Still Name Your Program 'a.out' Because Ken Thompson's 1968 PDP-7 Had No Linker
Dennis Ritchie's history of C explains that Ken Thompson's PDP-7 assembler had no loader or linker and always wrote its output to one fixed file, a.out, a name gcc still uses when you leave off -o.

Type cc hello.c, hit Enter, and a file named a.out appears. Not hello. Generations of students have assumed it’s a bug, or a joke, or a setting somebody forgot to change.
It’s a fossil. Ritchie, who created C, wrote the explanation into his history of the language, presented at the second History of Programming Languages conference in April 1993. The machine Thompson started Unix on, “the DEC PDP-7 on which he started in 1968,” had “8K 18-bit words of memory and no software useful to him.”
So Thompson wrote his own tools, and kept them tiny. “Thompson’s PDP-7 assembler outdid even DEC’s in simplicity; it evaluated expressions and emitted the corresponding bits,” Ritchie wrote. “There were no libraries, no loader or link editor: the entire source of a program was presented to the assembler, and the output file—with a fixed name—that emerged was directly executable.”
Then the payoff, in a parenthesis: “This name, a.out, explains a bit of Unix etymology; it is the output of the assembler.”
Unix grew up and got real linkers, and the name should have died there. It didn’t. “Even after the system gained a linker and a means of specifying another name explicitly, it was retained as the default executable result of a compilation,” Ritchie wrote.
It’s still retained. The GCC manual says it in plain words today: “If -o is not specified, the default is to put an executable file in a.out.” The name even outgrew the file. On BSD systems, the a.out(5) manual page is titled “format of executable binary files,” and its history line says the <a.out.h> header “appeared in Version 7 AT&T UNIX.”
Nobody ever filed the paperwork to retire it, and no compiler maintainer seems eager to be the one who breaks every intro-to-C tutorial on Earth.
Expect a.out to outlast every machine that runs it today. Tools built on top of compilers, from IDEs to AI coding agents, hide the name by passing their own output paths, so fewer beginners will ever see it. The open question is whether the name ends up known only as trivia, the way most people never learn why their keyboard says “Return.”