Comment faire pour exécuter du code C/fichier avec MINGW?
OK, j'ai juste commencé à apprendre le langage C, et j'ai lu beaucoup de gens suggèrent d'utiliser MinGW comme un compilateur. J'ai téléchargé, installé et mis correctement (je pense) et de définir le chemin d'accès. tout semble OK.
Mon problème est que je ne peux pas trouver un moyen d'exécuter un fichier C dans le CMD, quand je fais quelque chose comme ceci:
C:\>gcc a\c1.c
rien apparaître sur le CMD
En c1.c fichier j'ai le texte suivant:
#include <stdio.h>
int main(void)
{
printf("this is a test.\n");
return 0;
}
J'ai essayé de la cct et d'un compilateur lors de l'utilisation de cette façon:
C:\>tcc a\c1.c
il affiche ce qui suit:
this is a test.
Comment puis-je faire MinGW sortie de la même façon?
J'ai regardé dans le MinGW/gcc manuel et HowTos et ne pouvait pas trouver un moyen de faire la même chose.
OriginalL'auteur XO39 | 2011-10-29
Vous devez vous connecter pour publier un commentaire.
gcc filename.c
les compile et les liens de votre fichier -- mais il n'a pas d'écrire le fichier exécutable àhello.exe
que vous pourriez vous attendre (et bien sûr, il n'a pas l'exécuter).Et, comme la convention pour Unix outils,
gcc
ne pas imprimer quoi que ce soit, à moins que quelque chose n'allait pas. Le fait qu'il a terminé et vous avez obtenu un nouveauC:\>
invite est ce qui vous dit qu'il a réussi.Sur Unix, pour des raisons historiques, le nom par défaut d'un fichier exécutable est
a.out
. Pour MinGW, le nom par défaut esta.exe
.Donc, après l'exécution de
gcc a\c1.c
, vous pouvez exécutera.exe
ou./a.exe
pour exécuter le programme.Ou, mieux, comme Doug suggère, vous pouvez utiliser le
-o
option pour spécifier le nom de l'exécutable généré le fichier.(Si vous voulez exécuter simplement le compilateur et de générer un fichier de l'objet plutôt qu'un fichier exécutable, l'utilisation
gcc -c
.)gcc -c
, il génère un fichier de l'objet comme vous l'avez mentionné, mais cela ne veut pas imprimer quoi que ce soit. Et si je lancegcc c1.o
il créer un(n)a.exe
fichier, puis lors de l'exécution dea.exe
fichier, il imprime la phrasethis is a test.
, est-ce un comportement normal? Ou suis-je en train de faire quelque chose de mal? Si je comprends bien, il n'y a aucun moyen d'imprimer quoi que ce soit dans gcc sans courir le.exe
fichier, non?Oui, c'est parfaitement normal. gcc reste calme, sauf si elle a quelque chose d'important à dire. Juste comme une expérience, essayez d'introduire une erreur, la suppression d'un point-virgule à partir de votre fichier source, et de compiler à nouveau et voir ce que gcc dit.
GCC est un compilateur. Il serait surtout l'impression avertissements et messages d'erreur, et vous devez les éviter). Une fois compilé, le programme ne whataver vous a chargé de le faire. Si le code source contient de sortie des fonctions comme printf ou met qui arrive à être exécuté, il va en effet de la sortie de quelque chose. Mais votre programme peut également se bloquer ou se comporter de manière incorrecte. La correction qui est appelé le débogage.
Merci beaucoup, Keith. Je suppose que je dois jouer avec C pendant un certain temps avant de m'habituer et comprendre comment il fonctionne. Votre aide est très appréciée. 🙂
Il est important d'être conscient que le comportement de gcc (
-c
pour inhiber la liaison,a.exe
par défaut le nom de l'exécutable, peu ou pas visibles de sortie) est pas défini par le langage C. C'est juste l'idiosyncrasie d'un compilateur. D'autres peuvent se comporter différemment et toujours parfaitement valide C compilateurs.OriginalL'auteur Keith Thompson
de la cct de la compilation, édition de liens, et de l'exécution de votre C fichier.
gcc est la compilation de votre fichier C, mais pas de les lier ou de les exécuter.
Essayer:
Suivie par
Une fois que vous avez compris, vous voulez savoir à propos de
make
Merci pour l'info, Doug. 🙂
OriginalL'auteur Doug Currie
Puisque vous êtes un débutant, je vous suggère fortement de compiler avec la
-Wall
drapeau (pour obtenir toutes les mises en garde de GCC peut vous donner) et avec le-g
drapeau (pour obtenir un debuggable exécutable). Prendre l'habitude d'améliorer votre code jusqu'à ce que vous n'obtenez pas de mises en garde. Et en effet, apprendre à utiliser lesmake
. Si vous souhaitez que le compilateur optimiser le code généré, remplacer-g
avec-O2
(mais le faire une fois que le programme exécute correctement, et vous avez de débogage).OriginalL'auteur Basile Starynkevitch