Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gcc编译器未在windows for C中通过cmd创建.exe文件_C_Windows_Gcc_Cmd - Fatal编程技术网

gcc编译器未在windows for C中通过cmd创建.exe文件

gcc编译器未在windows for C中通过cmd创建.exe文件,c,windows,gcc,cmd,C,Windows,Gcc,Cmd,我还担心如何让你们了解我的问题并分享我的经验。我正在学习C。在前面,我使用代码块IDE编译和运行C代码。我了解到,作为初学者,使用cmd编译和运行代码比使用IDE更好。我正在使用Windows8。在我不习惯使用cmd之前,我还了解到,要想成为一名高级用户和优秀的编程人员,我应该非常了解cmd的用法。 设置环境变量后,通过以下命令开始通过cmd编译c代码 gcc-o“可执行文件名”“C源代码文件名” 它是一个.exe文件。但是没有.o文件。当我使用IDE时,还发现了一个带有.exe的.o文件 可能

我还担心如何让你们了解我的问题并分享我的经验。我正在学习C。在前面,我使用代码块IDE编译和运行C代码。我了解到,作为初学者,使用cmd编译和运行代码比使用IDE更好。我正在使用Windows8。在我不习惯使用cmd之前,我还了解到,要想成为一名高级用户和优秀的编程人员,我应该非常了解cmd的用法。 设置环境变量后,通过以下命令开始通过cmd编译c代码

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

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

  • 可能的原因是什么
  • 编译代码后,我通过调用“可执行文件名”来运行它。 当检查目录时,发现了一个.exe文件。 但现在的问题是,最近我在编译和运行代码时,发现没有创建.exe文件,但创建了一个扩展名未知的文件“POINTERWHILE file(.POINTERWHILE)”(从文件属性复制)。此未知扩展名文件仅由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));
     }
    
    #包括
    main()
    {
    char*p=“停止”;
    char-str[80];
    做
    {
    printf(“输入字符串:”);
    获取(str);
    }
    而(strcmp(p,str));
    }
    
    此程序将接受输入,直到输入“停止”

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

    我编写并运行相同的代码,形成相同的文件夹和其他文件夹的代码块,结果是相同的。该文件仅在IDE中运行

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


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

    您在学习cmd和C时付出了巨大的努力

    但是,我认为您混淆了文件的扩展名(名称)及其内容。当您告诉gcc生成一个可执行文件时,您可能希望给它一个.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
    

    希望它能有所帮助

    试着问一些小而简单的问题。我几乎不知道你想问什么。如果你给GCC一些
    .c
    文件,它将编译它们并将它们链接到一个可执行文件中,并且不会保存任何中间
    .o
    文件。如果您想要这种行为,您需要将
    -c
    传递给GCC,告诉它只进行编译,而不进行链接。那么如何从.o文件生成.exe文件?only.o文件@JonathonReinhartStack溢出的用途并不是为了教授编译过程中的每一个细节。你需要找到一本好书、资源或导师。使用cmd工作的动机是我从Linux获得的。我试图学习Linux,但我发现了一些问题。我无法在没有internet的Linux上安装软件,也就是说Ubuntu软件中心。我在互联网上搜索,但无法理解它们和使用搜索结果。结果我完全依赖互联网。我试图与windows一起启动我的pc Linux,但由于不小心,我所有的硬盘都被格式化了,我丢失了数据。虽然不知怎么的,我已经把它们都找回来了。然后,我想我应该使用的资源,所有准备就绪在我手中意味着windows命令。如果你有任何资源学习Linux作为初学者,请不要忘记分享@KrahnacKYes,现在人们最有可能使用Internet在Linux、Windows和OSX(而不是CD或其他来源)中安装软件。在我看来,Ubuntu在用户友好方面做了很多努力,所以我建议初学者使用它。如果你对此有任何问题,你可以在Ubuntu论坛或askubuntu.com上发布。以下是一个可能有用的链接:
    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