为什么当我尝试通过为程序命名的文件来编译我的C程序时,它为它创建了一个应用程序?

时间:2016-01-23 21:27:49

标签: c gcc

我曾经尝试编写一个用于国际象棋游戏的C程序(感谢YouTube的Bluefever软件的教程),但是当我编写程序时,我执行了这行代码:

C:\TDM-GCC-64\>gcc Chess/chess.c Chess/init.c -o chess

编译工作(没有语法错误或任何东西),但当我到达我的文件目录时,我看到了这个(用蓝色圈出):

意外的应用程序(但没有病毒!):

Enter image description here

这是怎么发生的?它可能与我正在编译的那一行有关,但是什么是" intel"在这背后?

3 个答案:

答案 0 :(得分:5)

编译器生成应用程序是正常的!

令人惊讶的是可执行文件的位置,应该在父目录中生成:

 C:\TDM-GCC-64\> gcc Chess/chess.c Chess/init.c -o chess

解释很有意思:

  • 您正在使用Windows操作系统,其中文件名不区分大小写。
  • 您指示gcc将可执行文件生成到chess,但这是Chess目录的名称。在这种情况下,gcc在命名目录中生成可执行文件,并为其指定一个名称,该名称是第一个源文件chess.c的基本名称 - > chess
  • 此外,Windows中的应用程序名称确实为chess.exe,但文件管理器的默认设置是不显示文件扩展名。这是一个非常不幸的选择。我建议您在Windows /文件资源管理器选项窗口中更改此设置以始终显示文件扩展名。这样您就可以更轻松地区分chess.cchess.exechess.h

您在Chess目录中有Makefile,您应该使用make命令来构建可执行文件:

 C:\TDM-GCC-64\> make -C Chess

或只是cdChess子目录并输入:

 C:\TDM-GCC-64\Chess> make

答案 1 :(得分:3)

那是你告诉编译器的文件。

gcc的-o选项是输出文件。在这种情况下,您告诉它创建一个名为chess的可执行文件。这正是创造的东西。

答案 2 :(得分:1)

编译器在编译时自动创建可执行文件。