gcc编译器没有在cmd中为cmd创建.exe文件

时间:2015-01-20 06:04:50

标签: c windows gcc cmd

我也担心如何让你们了解我的问题并分享我的经验。我正在学习C.in之前,我使用Code-blocks IDE来编译和运行C代码。我了解到,作为初学者,最好使用cmd来编译和运行代码而不是IDE。我正在使用Windows 8.在我不习惯使用cmd之前,我还了解到要成为一名高级用户和优秀的程序员,我应该知道cmd的使用情况。 设置环境变量后,通过以下命令

按cmd编译c代码

gcc -o"可执行文件名" " C源代码文件名"

它是一个.exe文件。但没有.o文件。当我使用IDE时,也发现了一个带有.exe

的.o文件
  1. 可能的原因是什么?
  2. 编译代码后,我通过调用"可执行文件名"来运行它。 当检查目录时,找到.exe文件。 但现在的问题是,最近我正在编译和运行代码,我发现没有创建.exe文件,但是创建了一个未知扩展名的文件" POINTERWHILE文件(.pointerWhile)& #34;(从文件属性复制)。此未知扩展文件仅由cmd运行。它可能是我的源代码文件名的一部分。下面给出了代码和源代码的名称。

    源代码名称:Example184.1.pointerWhile

    #include<stdio.h>
    main()
     {
      char *p = "stop";
      char str[80];
       do
        {
         printf("Enter a String: ");
         gets(str);
        }
      while(strcmp(p,str));
     }
    

    此程序将接受输入,直到&#34;停止&#34;输入

    这种事情发生在其他几个文件上。然后我将它们复制到另一个文件夹并编译并运行但结果相同。

    我通过codeblocks编译并运行相同的代码形式相同的文件夹和其他文件夹,结果是一样的。该文件仅在IDE中运行时才运行。

    然后在同一目录和其他目录中创建另一个具有其他名称的文件,但代码相同。然后它正在创建.exe文件。

    2.创建.exe文件的原因是什么?

1 个答案:

答案 0 :(得分:0)

你和C一起学习cmd的努力!

但是,我认为您混淆了文件的扩展名(名称)及其内容。当你告诉gcc生成一个可执行文件时,你可能想给它一个.exe扩展名,就像你说的那样,假设你的源被调用&#34; myprog.c&#34;:

gcc -o myprog.exe myprog.c

这应始终生成myprog.exe文件。但没有什么可以阻止你像这样调用它:     gcc -o myprog.myFancyExtension myprog.c

你仍然可以通过cmd运行程序(虽然我没有在Windows上测试)。请注意,在Linux等其他系统上,可执行文件通常根本没有扩展名。

此外,您还在谈论IDE如何生成myprog.o对象文件以及myprog.exe可执行文件。为此,IDE会调用编译器(gcc)两次:一次生成.o文件,另一次生成.exe文件。在一次编译器运行中无法生成这两个文件。学习cmd的好处是,您将在不告诉您的情况下了解IDE实际为您做的事情。缺点是你必须真正学习它;)

通常,人们不喜欢手动使用gcc,因为随着项目的增长,他们将使用不同的文件,并且手动重新编译它们变得乏味。要解决这个问题,您需要使用构建工具,例如Make。我不熟悉Windows下的开发,因此我无法推荐任何特定工具。这些工具的重点在于,当您的项目有多个源文件时,您只需要调用一次构建器,如下所示:Make:

make

而不是手动调用:

gcc -c myFeature1.c
gcc -c myOtherFeature.c
gcc -c myYetAnotherFeature.c
gcc -c myMain.c
gcc -o myMain.exe MyMain.o myFeature1.o myOtherFeature.o myYetAnotherFeature.o

希望有所帮助