2011-02-18 17 views
17

Ho appena installato MinGW C++ e nella cartella bin posso vedere 7 file .exe che compilano il mio programma:..quale file MinGW da utilizzare come un compilatore

  1. C++ exe
  2. g ++ exe
  3. mingw32-C++. exe
  4. mingw32-g ++. exe
  5. gcc.exe
  6. mingw32-gcc.exe
  7. mingw32-gcc-4.4.1. exe

Il mio piccolo programma (testprog.cpp) viene compilato correttamente con ciascuno di essi; il file a.exe viene generato nella cartella bin e viene eseguito correttamente.

Qual è la differenza tra loro e quale dovrei usare? Inoltre, cosa posso fare per cambiare automaticamente il nome del file di output da a.exe a testprog.exe su ogni compilazione di successo?

+3

Quale produce l'eseguibile più veloce? –

risposta

8

È possibile che siano tutti uguali; copie esatte o collegamenti simbolici tra loro. Prova a utilizzare il flag --version per vedere cosa hai. Sulla mia installazione MingGW qui, ognuno di questi binari è diverso (controllato con diff), ma tutti in uscita lo stesso informazioni sulla versione (con l'eccezione del primo bit, che è il nome del file):

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. 

Utilizzare il -o flag per cambiare il nome del file di output:

gcc -o testprog.exe testprog.cpp 
+0

Hai ragione. i primi 4 sono lo stesso file, come lo sono gli ultimi 3. Qual è la differenza però? E grazie per il -o suggerimento. – Abbas

+2

@Abbas: i primi 4 sono compilatori C++ e gli ultimi 3 sono compilatori C. Probabilmente hanno un comportamento di collegamento diverso, come @Crazy Eddie menzionato nella sua risposta. Quelli con "++" nel loro nome probabilmente sono anche quelli predefiniti per la compilazione di file come C++, anche se hanno una semplice estensione .c. –

3

In unix erano per lo più con collegamenti simbolici. L'unica differenza principale è tra "cc" e "++". Si dovrebbe notare una differenza tra questi due se si utilizza qualsiasi parte della libreria standard C++. Le versioni "++" si collegano automaticamente a quella lib. I 'cc' sono compilatori C e quindi non ... anche se puoi usarli come compilatori C++ aggiungendo semplicemente -lstdC++ o altro.

14

Queste seguono le convenzioni di denominazione di gcc.

  • C++. Exe è un nome tradizionale per il sistema c compilatore ++
  • exe ​​g ++. E gcc.exe sono i nomi per i compilatori GCC che compilano per il "sistema attuale"
  • versioni mingw32- * sono i nomi dei compilatori che si compattano in modo incrociato con il target "mingw". In questo caso è uguale all'obiettivo del sistema.
  • An poi mingw32-gcc-4.1.exe è "gcc per la versione di destinazione MinGW 4.1"

Si dovrebbe in genere compilare il codice C con una variante "gcc", e codice C++ con una "g ++" variante.

Usa -o filename per specificare il nome del file di output, il valore predefinito è a.exe

0

mentre ero alla ricerca intorno al web per le istruzioni nel fare alcune DLL mi sono imbattuto in un processo di compilazione C++ e da quello che ho visto, hanno usato g ++ per compilare C++ allo stesso modo di usare gcc.

Problemi correlati