无法通过命令提示符运行C程序

5
大家好,我正在学习C语言并尝试通过命令控制台cmd运行它。我已经安装了Eclipse和Mingw,并将它们添加到了路径中:
C:\MinGW\bin\;C:\MinGW\msys\1.0\bin
我在记事本++上编写了这个程序进行快速测试,并将其保存到了C:\test.c,同时也保存在一个名为C:\Users\Pikachu\Music\C code的文件夹下,当时我还在摸索中。
#include <stdio.h>

int main()
{
    printf("Hey, Buddy!\n");
    return 0;
}

在 cmd 控制台上,我输入了:

c:\>gcc test.c 

并且收到了错误信息:
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/id.exe: cannot ope
n output file a.exe: Invalid argument
collect2.exe: error: ld returned 1 exit status

当我输入时:
c:\>cd c:\Users\Pikachu\Music\c code

然后:

gcc test.c

它只是跳过了一行,好像什么都没发生,又回到了原点:

c:\Users\Pikachu\Music\c code>gcc test.c

c:\Users\Pikachu\Music\c code>

我想知道是否有人了解情况并能帮我解决。如果我能从命令提示符中看到“Hey,Buddy!”就会非常高兴!此外,有没有人知道为什么我在c:\运行它时会收到错误消息,但当我在Music \ c代码\test.c文件夹中运行它时,却没有任何消息,尽管我据说是在运行相同的test.c文件?
我尝试过搜索,并得到关于电脑无法连接到正确dll文件的参考,但我不确定如何将其应用于我的具体问题。
哦,好奇的是,当我尝试在c:\中保存另一个文件时,我收到一条消息,说我没有权限这样做,尽管5分钟前我刚刚这样做了。 有什么建议吗?
谢谢你的帮助!

1
一个简单的谷歌搜索就可以告诉你,该命令显然不是“write”,在编译时应该使用“-o”参数,并且还应该编写输出文件。 gcc -o MY_OUTPUT_FILE_WANTED_NAME.exe MY_C_FILE_NAME.c 编译后,只需通过键入所选的输出文件名在cmd中运行它。 - Zach P
1个回答

4
当你在C源文件上运行gcc时,它将只生成一个可执行文件。我相信默认情况下它被称为a.exe,但我建议使用-o选项进行命名:
gcc text.c -o test.exe

当您的文件成功编译后,运行可执行文件即可向世界打招呼:

c:\Users\Pikachu\Music\c code> .\test.exe

关于你遇到的第一个错误,可能与gcc无法在根目录文件夹上创建输出可执行文件有关。出于这个原因,我建议您将编码放在您的用户拥有的某个文件夹中,而不是系统文件夹。
顺便说一下,gcc支持许多其他选项。我强烈建议使用-Wall打开警告,并选择要遵循的C标准版本(-std=c99-ansi, 以及-pedantic标志)。

是的,就是这样!我必须执行:gcc test.c -o test.exe,然后紧接着我只需输入test.exe并按回车键,它就会在下一行上显示“嘿,伙计!”非常感谢! - 000
我应该在Eclipse或cmd中的哪里实现这些选项?我尝试过谷歌搜索gcc -Wall警告,但没有任何结果。 - 000
命令行选项在命令名称之后。就像我们使用 -o 选项一样,我们会使用 gcc -Wall -std=c99 -pedantic test.c -o text.exe。有关详细信息,请参阅 gcc 文档(尝试 gcc --help)。顺便说一句,我认为您的 Google 搜索失败了,因为它将 - 解释为忽略命令。尝试使用引号 "-Wall" 或删除连字符。 - hugomg
1
在Windows中,与Linux不同的是,你不需要使用"./",因为它会默认在当前文件夹中查找可执行文件。或者,如果你想要的话,可以使用".",因为在Windows中文件夹分隔符是反斜杠。 - phuclv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接