为什么程序总是编译成a.out?为什么不是 p.out 或 c.out 或 g.prog?

为什么程序总是编译成a.out?为什么不是 p.out 或 c.out 或 g.prog?

从历史上看,我知道当我运行cc命令时,或者gcc我的输出通常总是编译成,a.out除非我有 make 文件或在编译器上使用特定标志。但为什么a.out?为什么不c.out或者c.run或者任何无数的一百万种可能性呢?

答案1

它是一件历史文物,换句话说,它是一种遗产复古。历史上a.out代表“汇编器输出”

a.out现在只是文件的名称,但之前它也是可执行文件的文件格式。

如今,可执行a.out格式很少受支持。这ELF格式具有更广泛的用途,但我们仍然保留 C 编译器默认输出的旧名称。

答案2

扩展@A.Meau的答案......除了是一个历史文物之外,默认名称a.out是 POSIX 强制规定的

如果没有阻止链接编辑的选项(例如-C或者-E),并且所有输入文件编译和链接没有错误,生成的可执行文件应根据-o 输出文件选项(如果存在)或文件a. 输出

无论可执行文件使用的实际二进制格式如何,这都适用。a.out最初与特定格式相关,但是现代Linux系统一般使用极低频

相关内容