如何用MINGW运行C代码/文件?

esyap4oy  于 2023-01-20  发布在  其他
关注(0)|答案(3)|浏览(124)

好吧,我刚开始学习C语言,我读了很多人建议使用MinGW作为编译器。我下载,安装它,并设置它正确(我认为)和设置路径。一切似乎都很好。我的问题是,我找不到一种方法来运行一个C文件从CMD,当我这样做:

C:\>gcc a\c1.c

CMD上未显示任何内容
在c1.c文件中,我有以下内容:

#include <stdio.h>

int main(void)
{
    printf("this is a test.\n");
    return 0;
}

我尝试了tcc编译器,当使用它这样:

C:\>tcc a\c1.c

其输出如下:

this is a test.

我怎样才能用同样的方法输出MinGW呢?我看了MinGW/gcc手册和操作指南,没有找到同样的方法。

svmlkihl

svmlkihl1#

gcc filename.c编译并链接您的文件--但是它并不像您所期望的那样将可执行文件写入hello.exe(当然它也不会执行它)。
而且,正如基于Unix的工具的惯例一样,gcc通常不会打印任何内容,除非出现了错误。它完成了,并且您得到了一个新的C:\>提示符,这一事实告诉您它成功了。
在Unix上,由于历史原因,可执行文件的默认名称是a.out(它代表“汇编输出”),对于MinGW,默认名称是a.exe,因为Windows要求可执行文件的后缀是.exe
因此,在运行gcc a\c1.c之后,可以运行a.exe.\a.exe来运行程序。
或者,更好的是,如Doug所建议的,可以使用-o选项来指定生成的可执行文件的名称。
(If如果只想运行编译器并生成一个目标文件而不是可执行文件,请使用gcc -c。)
请注意,这种行为(除非出现问题,否则不打印任何内容,将可执行文件命名为a.outa.exe等)是由gcc编译器专门定义的。它不是C语言的一个特性。其他C编译器可能会也可能不会有类似的行为。

yhqotfr8

yhqotfr82#

tcc正在编译、链接和执行C文件。
gcc正在编译您的C文件,但没有链接或执行它。
试试看:

C:\>gcc -o a\ci.exe a\c1.c

其次是

a\ci.exe

一旦您弄明白了这一点,您将需要了解make

gkn4icbw

gkn4icbw3#

由于您是新手,我强烈建议您使用-Wall标志进行编译(获取GCC可以给予的所有警告)和-g标志(以获得可调试的可执行文件)。养成改进代码的习惯,直到不再收到警告。实际上,学习如何使用make。如果希望编译器对生成的代码执行optimize,将-g替换为-O2(但是在程序正确运行并且调试完成之后再执行此操作)。

相关问题