Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compilation du C sur Windows 10

Sujet résolu
    18 septembre 2020 à 12:00:19

    Bonjour tout le monde, 

    C'est mon premier message ici. Je suis désespéré de pouvoir enfin travailler sur mon nouveau poste, mais je bute sur erreurs après erreurs. Là, j'ai installé MinGW, compilateur censé m'aider à compiler du C/C++ sur Windows 10. Je l'ai fait hier, et testé, ça a très bien marché (pour les curieux, j'ai vu cette vidéo https://www.youtube.com/watch?v=40MWdFAGTzg).

    Aujourd'hui, j'ai essayé d'écrire un nouveau code pour le compiler, mais il y a une erreur. 

    Explication. Normalement, j'ai un code qui s'appelle par exemple main.c. 

    Dans le terminal, je compile avec gcc (gcc -o c.exe main.c => veut dire qu'on génère un exécutable appelé c )

    Puis je fais ./c.exe pour voir le résultat. 

    Donc pour ce programme...

    #include <stdio.h>
    #include <stdlib.h>
    
    int serie_harmonique(int N){
    		int res=1;
    		if (N==res){
    			return res;
    		}
    		else {
    			for(int i=2;i<=N;i++) {
    				res=res+(1/i);
    			}
    		}
    		return res;
    }
    
    int main()
    {
    	int a=2;
    	int resultat = serie_harmonique(a);
    	printf("%d\n", resultat);
    }

    Je fais 

    gcc -o serie_harmonique.exe main.c

    ./serie_harmonique.exe

    Et je me retrouve avec ça

    Sachant qu'un peu plus tôt, j'avais réessayé l'exemple de la veille, et ça marchait. Je ne comprends pas. J'ai le dossier ouvert à côté qui montre clairement l'éxecutable "serie_harmonique" apparaître, mais je ne peux pas le lancer ! Que faire ?

    Edit : ajout du code, merci rouloude. Et correction faite. J'entends ce que tu dis pour les droits d’exécution, mais alors pourquoi la même manœuvre marchait exactement hier et un peu plus tôt dans la journée ? Et dès que je tente un autre code, ça bugue ?

    EDIT : Problème résolu par PierreleFou, l'extension .exe se met automatiquement, donc en nommant le fichier executable serie_harmonique.exe dans ma ligne de commande, je créais un fichier serie_harmonique.exe.exe ! Il faut donc écrire "gcc -o executable nomdufichier.c" puis "./executable.exe". 

    -
    Edité par winnieThegreedy 21 septembre 2020 à 17:51:48

    • Partager sur Facebook
    • Partager sur Twitter
      18 septembre 2020 à 12:05:12

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.

      Merci de modifier votre message d'origine en fonction.

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        18 septembre 2020 à 12:22:04

        Normalement en C, on de défini pas de fonction à l’intérieur de fonction !

        Pour ton problème on dirait qu'il y a un problème de droit d'exécution, (Je suis toujours sous Windows 7, je n'ai jamais vu ce type de message l'or de l'exécution d'un programme), (j'ai bien un Win10 mais je ne code pas dessus, juste des test de prog).

        Et surtout : Utilises le bouton code </> du forum pour poster ton code ! (tu peux modifier ton post, lien modifier en haut à droite du post).

        • Partager sur Facebook
        • Partager sur Twitter
          18 septembre 2020 à 13:23:06

          L'exécutable s'appelle serie_harmonique (comme sur la capture d'écran) ou serie_harmonique.exe ?

          (Je sais que Windows cache par défaut les extensions, mais justement, sur la capture d'écran on voit les extensions des fichiers source, donc ici l'affichage des extensions est activé, non ?)

          • Partager sur Facebook
          • Partager sur Twitter
            18 septembre 2020 à 13:51:17

            Rien à voir avec ton soucis, mais serie_harmonique ce n'est pas sur des réels ?
            • Partager sur Facebook
            • Partager sur Twitter
              18 septembre 2020 à 15:48:48

              Hello,

              Dans l'état actuel de ton code, le test ligne 6 ne sert à rien.

              • Partager sur Facebook
              • Partager sur Twitter

              On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                18 septembre 2020 à 16:02:09

                Il s'appelle normalement serie_harmonique.exe comme je l'ai généré d'après cette ligne => gcc -o serie_harmonique.exe main.c

                Après, c'est vrai que Windows ne montre pas l'extension, mais ça a déjà marché pour d'autres exécutables. 

                rouloude, oui, le res doit bel et bien être un float et non un int, erreur bête de ma part. Du coup, ce sera printf("%f\n" resultat); et float resultat; dans le main, et des changements à faire aussi dans la fonction.

                • Partager sur Facebook
                • Partager sur Twitter
                  18 septembre 2020 à 18:00:27

                  Je n'utilise pas Mingw mais Mingw-w64 qui fonctionne mieux de mon point de vue.
                  Je suis sur Windows 10 et je n'ai jamais eu de problème de permissions. Je travaille avec cmd et non PowerShell.
                  Quand je compile en invite de commande, je ne met pas le '.exe'
                  Mes extensions sont visibles avec l'explorateur de fichiers.
                  Je ferais gcc -o serieharmonique main.c
                  je me suis arrangé pour que le dossier des sources et exécutables soit dans mon path pour la session.
                  Donc, je tape directement
                  > machin
                  et non .\machin ou .\machin.exe

                  -
                  Edité par PierrotLeFou 18 septembre 2020 à 18:05:38

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Le Tout est souvent plus grand que la somme de ses parties.

                    18 septembre 2020 à 18:12:29

                    Mais pourquoi taper .\thingly ? (ou thingly.exe)

                    thingly suffit.

                    cd .\ renvoie au répertoire courant.

                    Peut-être une différence sur linux avec le ./ ?

                    Edit: pas vu l'edit de PierrotLeFou. Sorry.

                    -
                    Edité par edgarjacobs 18 septembre 2020 à 18:15:43

                    • Partager sur Facebook
                    • Partager sur Twitter

                    On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                      18 septembre 2020 à 20:18:57

                      winnieThegreedy a écrit:

                      Il s'appelle normalement serie_harmonique.exe comme je l'ai généré d'après cette ligne => gcc -o serie_harmonique.exe main.c

                      Après, c'est vrai que Windows ne montre pas l'extension, mais ça a déjà marché pour d'autres exécutables. 

                      Tu veux dire que Windows ne montre pas l'extension des exécutables mais montre l'extension des fichiers sources ? C'est de plus en plus tordu. Je te recommande vraiment de faire afficher toutes les extensions, ainsi tu seras toujours fixé.

                      Maintenant, si tu as un doute sur les permissions, il faut les vérifier. Clique droit sur le nom de l'exécutable, "propriétés", etc.

                      -
                      Edité par robun 18 septembre 2020 à 20:21:22

                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 septembre 2020 à 22:00:29

                        Bonjour, j'ai regardé les permissions, et j'ai le contrôle total, mais ça ne marche toujours pas...

                        Adgarjacobs, j'ai essayé ce que t'as mis, mais là non plus, ça n'a pas marché.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 septembre 2020 à 1:43:10

                          J'ai vérifié que cd .\ ne donne pas d'erreur et me laisse sur le dossier courant.
                          As-tu accès à ton compilateur en invite de commande? Il y a des gens qui parlent de terminal et qui sont dans un IDE comme Visual Studio ou Code::Blocks
                          As-tu activé l'affichage des extensions? Si oui, vois-tu l'extension '.exe'?
                          Il y a une autre façon de voir les extensions, c'est de faire encore le clic droit et d'aller à l'option "renommer".
                          Tu ne changes rien mais tu devrais voir l'extension.
                          Est-ce que par hasard tu aurais '.exe.exe' dcomme extension? Ça me surprendrait mais on ne sait jamais ...
                          J'ai renommé un de mes fichier avec une extension '.exe' en effaçant l'extension et cmd ne le reconnait plus (même avec le .\).
                          Je l'ai renommé de nouveau avec la commande 'ren' en ajoutant '.exe' et ça marche à nouveau.
                          Quand je compile sous cmd, je ne met jamais l'extension .exe, c'est gcc qui le met pour moi.
                          Tu n'as rien à perdre à l'essayer ...
                          Normalement, Windows n'aime pas qu'on change l'extension. Comment fais-tu pour avoir une extension '.c' pour tes sources?
                          (moi, j'ignore le warning de Windows)
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Le Tout est souvent plus grand que la somme de ses parties.

                          Anonyme
                            21 septembre 2020 à 7:20:03

                            salut,

                            Dans ce post >> https://answers.microsoft.com/en-us/windows/forum/windows_10-hardware-winpc/windows-10-access-denied-to-mmcexe/ea1f75c6-6ce9-4a89-b0c3-1ec505ccc685 le problème a été résolue en lançant un cmd en administrateur. Est-ce que ça pourrait être ça ? :3

                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 septembre 2020 à 10:13:38

                              Bonjour

                              Peut-être suis-je complètement à côté de la plaque mais j'ai l'impression que j'ai rencontré une fois ce problème sous Ubuntu (donc j'utilisais gcc). Je reprenais un code écrit sous Windows 10 et j'avais cette erreur bizarre qui ressemblait à un accès refusé au caractère ....

                              J'ai effacé les lignes d code correspondantes et je les ai retapées et tout a fonctionné ! Ne me demandez pas pourquoi mais c'est ainsi. Essaie on ne sait jamais !

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Le crayon la gomme et le papier sont les meilleurs outils du programmeur !

                                21 septembre 2020 à 17:44:40

                                La connerie que j'ai faite en enlevant (volontairement) l'extension '.exe' et en la remettant, je ne l'ai pas faite en mode administrateur.

                                @joel76:

                                Je n'ai pas vu le message, était-ce "stray character"? Il y a des caractères égarés qu'on ne détecte pas.

                                Ça m'arrive parfois si je fais un copier-coller de code à partir d'une page web.

                                -
                                Edité par PierrotLeFou 21 septembre 2020 à 17:53:57

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Le Tout est souvent plus grand que la somme de ses parties.

                                  21 septembre 2020 à 17:49:21

                                  Merci infiniment à tous pour vos réponses, je vais enfin pouvoir me mettre au travail !! 

                                  PierrotLeFou , dès que j'ai lu ta réponse, j'ai su que c'était ça ! Parce qu'une fois  j'ai enregistré une image que j'ai appelé image.png au format png ! Dont, image.png.png. J'avais au préalable vérifié que je générais bel et bien un .exe au travers des propriétés, mais je n'arrivais pas à voir le nom complet avec l'extension en renommant (windows...). Du coup, dans ma ligne de commande, ça donne 

                                  gcc -o serie_harmonique test.c 

                                  puis 

                                  ./serie_harmonique.exe 

                                  Et ça compile. Encore une fois, merci à tous pour votre contribution !

                                  J'éditerai le message du haut comme quoi le problème est résolu

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    21 septembre 2020 à 21:42:33

                                    Voilà comment faire pour afficher tes extensions dans tes dossiers windows (partie "Afficher/Masquer")
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      21 septembre 2020 à 23:09:26

                                      Bonjour,

                                      >> J'éditerai le message du haut comme quoi le problème est résolu

                                      Le forum dispose d'une fonctionnalité pour ce cas.

                                      Sujet résolu

                                      Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        21 septembre 2020 à 23:09:29

                                        PierrotLeFou a écrit:

                                        @joel76:

                                        Je n'ai pas vu le message, était-ce "stray character"? Il y a des caractères égarés qu'on ne détecte pas.

                                        Ça m'arrive parfois si je fais un copier-coller de code à partir d'une page web.

                                        -
                                        Edité par PierrotLeFou il y a environ 5 heures


                                        Non ce n'était pas ça, moi aussi j'ai ce problème avec des codes copiés depuis Internet.

                                        La le code avait été tapé avec Visual Code sous Windows 10 et devait sans doute être UTF8 ou un truc comme à ça. Je l'avait recopié sous Ubuntu depuis le disque de Windows 10 et l'entête du source devait être incorrecte, pourtant la compilation se passait bien, bizarre, je n'ai pas compris du tout ce qui se passait.

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Le crayon la gomme et le papier sont les meilleurs outils du programmeur !

                                          29 septembre 2020 à 8:31:56

                                          Au passage, pour calculer la série harmonique, il faut faire la boucle en sens inverse.

                                          Tu sais probablement que la série harmonique diverge. Ce que tu calcules converge, parce qu'a partir d'u'un moment, le 1/i qu'on ajoute est négligeable par rapport à la somme.

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Compilation du C sur Windows 10

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown