为什么我得到一个" a.exe"而不是" a.out"在窗口C编程

时间:2017-11-19 13:37:58

标签: c compilation

当我在下面编译" hello_world.c"通过cc hello_world.c,
它会产生一个' a.exe'而不是' a.out'

#include <stdio.h>

main()
{
    printf("hello, world\n");
}
  1. &#34; a.out&#34;有什么区别?和&#34; a.exe&#34; ?
  2. 为什么我得到一个&#34; a.exe&#34;而不是&#34; a.out&#34; ?

3 个答案:

答案 0 :(得分:3)

Windows中的二进制执行文件具有扩展名exe。我不确定com - 文件支持,但不是我们的情况。扩展out通常用于在某些程序工作时编写文本协议。我猜可能是你的程序本身正在启动,创建out - 文件。如需更多帮助,请至少提供用于编译C程序的程序环境。

答案 1 :(得分:3)

这取决于您的平台。例如,gcc将在linux上生成.out,在{> 1}}在Windows上生成.exe,如果您不为其提供任何其他参数。 (即运行cc / gcc "source")。

您可以强制gcc.out的窗口上生成gcc "source" -o "dest.out"

如果您的编译器默认输出一个扩展名(在您的情况下,似乎.exe是默认值,对Windows来说完全没问题),我会坚持下去。无需担心没有获得其他类型。

答案 2 :(得分:-1)

编译 c程序后创建的

a.out临时文件对于类Unix操作系统实际上是Object Code。对象代码用于编写系统调用,该调用实现链接器的代码功能和重定位信息,以帮助它在内存中查找目标代码(更多信息here)。

编译器编译代码并编写一个称为目标代码的文件,在linux / unix中,该文件称为a.out。 此文件可以进一步linked到操作系统中存在的定义(或技术上更为libraries)以形成可执行映像

例如在Windows中:
enter image description here