Как запустить C код / ​​файл с MINGW? - PullRequest
3 голосов
/ 29 октября 2011

ОК, я только начал изучать язык Си, и я читал, что многие люди предлагают использовать 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 и HowTos и не смог найти способ сделать то же самое.

Ответы [ 3 ]

6 голосов
/ 29 октября 2011

gcc filename.c компилирует и связывает ваш файл - но он не записывает исполняемый файл в hello.exe, как вы ожидаете (и, конечно, он не выполняет его).

И, как принято для Unix-инструментов, gcc обычно ничего не печатает, если что-то не так. Тот факт, что он закончился, и вы получили новое приглашение C:\>, говорит о том, что оно прошло успешно.

В Unix по историческим причинам имя исполняемого файла по умолчанию - a.out. Для MinGW по умолчанию используется имя a.exe.

Таким образом, после запуска gcc a\c1.c вы можете запустить a.exe или ./a.exe для запуска программы.

Или, что лучше, как предлагает Дуг, вы можете использовать опцию -o, чтобы указать имя сгенерированного исполняемого файла.

(Если вы хотите запустить только компилятор и сгенерировать объектный файл, а не исполняемый файл, используйте gcc -c.)

1 голос
/ 29 октября 2011

Поскольку вы новичок, я настоятельно рекомендую вам скомпилировать с флагом -Wall (чтобы получить все предупреждения, которые может дать GCC) и с флагом -g (чтобы получить отлаживаемый исполняемый файл).Возьмите за правило улучшать ваш код, пока не получите больше предупреждений.И действительно, научитесь пользоваться make.Если вы хотите, чтобы компилятор оптимизировал сгенерированный код, замените -g на -O2 (но сделайте это после правильной работы программы и отладки).

1 голос
/ 29 октября 2011

tcc компилирует, связывает и выполняет ваш C-файл.

gcc компилирует ваш файл C, но не связывает и не выполняет его.

Попытка:

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

Вслед за

a\ci.exe

Как только вы это выясните, вы захотите узнать о make

...