好的,我刚开始学习C语言,我读过很多人建议使用MinGW作为编译器。我下载,安装并正确设置(我认为)并设置路径。一切似乎都没问题。 我的问题是,当我做这样的事情时,我找不到从CMD运行C文件的方法:
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手册和HowTos,找不到办法做同样的事情。
答案 0 :(得分:6)
gcc filename.c
编译并链接您的文件 - 但它不会像您期望的那样将可执行文件写入hello.exe
(当然它也不会执行它)。
而且,与基于Unix的工具的惯例一样,gcc
通常不会打印任何内容,除非出现问题。它完成并且你得到一个新的C:\>
提示符的事实告诉你它成功了。
在Unix上,由于历史原因,可执行文件的默认名称为a.out
。对于MinGW,默认名称为a.exe
。
因此,在运行gcc a\c1.c
后,您可以运行a.exe
或./a.exe
来运行该程序。
或者更好,正如Doug建议的那样,您可以使用-o
选项指定生成的可执行文件的名称。
(如果您只想运行编译器并生成目标文件而不是可执行文件,请使用gcc -c
。)
答案 1 :(得分:1)
tcc正在编译,链接和执行您的C文件。
gcc正在编译你的C文件,但没有链接或执行它。
尝试:
C:\>gcc -o a\ci.exe a\c1.c
其次是
a\ci.exe
一旦弄明白,您就会想了解make
答案 2 :(得分:1)
由于您是新手,我强烈建议您使用-Wall
标志(以获取GCC可以提供的所有警告)和-g
标志(以获取可调试的可执行文件)进行编译。养成改善代码的习惯,直到你不再收到任何警告为止。确实,学习如何使用make
。如果您希望编译器optimize生成的代码,请将-g
替换为-O2
(但是在程序正确运行后执行此操作,并且您已对其进行了调试)。