Какой файл MinGW использовать в качестве компилятора C ++ - PullRequest
18 голосов
/ 19 февраля 2011

Я только что установил MinGW, и в папке bin я вижу 7 .exe файлов, которые составляют мою программу:

  1. C ++. EXE
  2. г ++. Ех
  3. mingw32-C ++. EXE
  4. mingw32-г ++. Ех
  5. gcc.exe
  6. mingw32-gcc.exe
  7. mingw32-НКУ-4.4.1.exe

Моя маленькая программа (testprog.cpp) правильно компилируется с каждым из них; файл a.exe создается в папке bin и работает правильно.

Какая разница между ними и какую мне использовать? Кроме того, что можно сделать, чтобы автоматически изменять имя выходного файла с a.exe на testprog.exe при каждой успешной компиляции?

Ответы [ 4 ]

14 голосов
/ 19 февраля 2011

Они следуют соглашениям именования gcc.

  • c ++. Exe - традиционное имя для системного компилятора c ++
  • g ++. Exe и gcc.exe - это имена для компиляторов gcc, которые компилируются для «текущей системы»
  • mingw32- * версии - это имена для компиляторов, которые выполняют кросс-компиляцию для цели "mingw". В этом случае это то же самое, что и системная цель.
  • Затем mingw32-gcc-4.1.exe - это «gcc для целевой версии mingw 4.1»

Обычно вы должны компилировать код C с вариантом "gcc" и код c ++ с вариантом "g ++".

Используйте -o filename, чтобы указать имя выходного файла, по умолчанию a.exe

8 голосов
/ 19 февраля 2011

Вполне возможно, что они все одинаковые; точные копии или символические ссылки друг на друга. Попробуйте использовать флаг --version на каждом, чтобы увидеть, что у вас есть. На моей установке MingGW каждый из этих двоичных файлов отличается (проверяется с помощью diff), но все они выводят одинаковую информацию о версии (за исключением первого бита, который является именем файла):

gcc.exe (GCC) 3.4.5 (mingw-vista special r3)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Используйте флаг -o, чтобы изменить имя выходного файла:

gcc -o testprog.exe testprog.cpp
3 голосов
/ 19 февраля 2011

В Unix они в основном по символическим ссылкам. Единственное существенное различие между «cc» и «++». Вы должны заметить разницу между этими двумя, если вы используете какую-либо часть стандартной библиотеки C ++. Версии '++' ссылаются на эту библиотеку автоматически. 'Cc' являются компиляторами C и поэтому не ... хотя вы можете использовать их как компиляторы C ++, просто добавив -lstdc ++ или что-то еще.

0 голосов
/ 08 апреля 2013

Пока я искал в Интернете инструкции по созданию некоторых DLL, я столкнулся с процессом компиляции C ++, и, как я увидел, они использовали g ++ для компиляции c ++ так же, как и с помощью gcc.

...