好吧,我刚开始学习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手册和操作指南,没有找到同样的方法。
3条答案
按热度按时间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.out
或a.exe
等)是由gcc编译器专门定义的。它不是C语言的一个特性。其他C编译器可能会也可能不会有类似的行为。yhqotfr82#
tcc正在编译、链接和执行C文件。
gcc正在编译您的C文件,但没有链接或执行它。
试试看:
其次是
一旦您弄明白了这一点,您将需要了解
make
gkn4icbw3#
由于您是新手,我强烈建议您使用
-Wall
标志进行编译(获取GCC可以给予的所有警告)和-g
标志(以获得可调试的可执行文件)。养成改进代码的习惯,直到不再收到警告。实际上,学习如何使用make
。如果希望编译器对生成的代码执行optimize,将-g
替换为-O2
(但是在程序正确运行并且调试完成之后再执行此操作)。