Compiler du C avec gcc windows 8.
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

Compiler du C avec gcc windows 8.



  1. #1
    invitec3b608ea

    Compiler du C avec gcc windows 8.


    ------

    Bonjour à tous,

    Je ne suis pas très doué en informatique...pour l'instant je suis occupé à remettre à jour un pc qui à violemment planté et qu'il m'a fallu réinitialiser.

    Dans l'affaire, j'ai perdu la capacité de compiler en C (avec gcc), en suivant les tutos sur internet j'effectue la démarche suivante:

    1. Télécharger : http://sourceforge.net/projects/mingw/files/
    2. Installer
    3. Dans les variables d'environnement (j'ignore ce que c'est...), sur Path ajouter ";c:\mingw\bin"

    ensuite je vais dans l'invite de commande, je tape gcc et ça me dit "gcc n'est pas reconnu en tant que commande interne"... Le pc n'a pas encore été redémarré car certaines installations prendront la nuit, cependant je ne suis pas certain que redémarrer l'ordi suffise à contourner ce problème qu'il me faut résoudre relativement rapidement.

    Je viens donc à vous dans l'espoir de trouver des conseils!


    Merci aux lecteurs!

    -----

  2. #2
    polo974

    Re : Compiler du C avec gcc windows 8.

    ... cependant je ne suis pas certain que redémarrer l'ordi suffise à contourner ce problème qu'il me faut résoudre relativement rapidement.
    Non, c'est pas suffisant...

    Sinon, une simple recherche (windows variables d'environnement) aurait dû te renseigner suffisamment.

    clic menu
    clic droit ordinateur /propriétés
    en bas il y a un bouton "variables d'environnement"

    dans variables système chercher path ou PATH, l'éditer SANS SE GOURER (en gros aller au bout, ajouter ";C:\mingw\bin" et vérifier puis enregistrer)
    Jusqu'ici tout va bien...

  3. #3
    invitec3b608ea

    Re : Compiler du C avec gcc windows 8.

    Oui, on trouve des résultats en tapant sur google mais, par exemple wiki:

    "En informatique, les variables d’environnement sont des variables dynamiques utilisées par les différents processus d’un système d’exploitation (Windows, Unix, etc.). Elles servent à communiquer des informations entre programmes qui ne se trouvent pas sur la même ligne hiérarchique, et ont donc besoin d'une convention pour se communiquer mutuellement leurs choix."

    C'est un peu jargonné et je perçois pas vraiment le sens...

    Sinon je crois que mon erreur est plus bête encore: je pense n'avoir chargé aucun package et m'être contenté du fichier à 86,4 ko sur sourceforge...Que dois-je télécharger en plus? Et où...

  4. #4
    Jack
    Modérateur

    Re : Compiler du C avec gcc windows 8.

    si gcc se trouve dans le dossier "c:\mingw\bin", windows ne "pensera" pas tout seul à aller le trouver là. C'est pour cela que la variable d'environnement "path" (chemin donc) contient la liste des chemins à explorer pour trouver un exécutable

  5. A voir en vidéo sur Futura
  6. #5
    Paraboloide_Hyperbolique

    Re : Compiler du C avec gcc windows 8.

    Bonsoir,

    Sinon, vous pouvez toujours installer Codeblocks (qui installera gcc dans la foulée). http://www.codeblocks.org/downloads/26 (prendre codeblocks-16.01mingw-setup.exe)

    Si mes souvenirs sont bons, l'installateur vous fournira la possibilité d'écrire les variables d'environnement nécessaires à une utilisation de gcc indépendamment de Codeblocks.

  7. #6
    invitec3b608ea

    Re : Compiler du C avec gcc windows 8.

    Bonsoir,

    Merci à vous tous!

    Je crois que j'avais finalement compris cet élément basique pour le cas précis du "Path" mais c'est bien de le voir écrit! La "variable d'environnement" est plus général apparemment, si je comprends bien elle est ce qui fait le lien entre deux programmes? Disant à l'un comment interagir avec l'autre? P.exemple dans le cas du Path, disant que chercher et où le chercher pour pouvoir l'exécuter dans l'invite de commande...(?)

    Merci bcp Paraboloide_Hyperbolique! Je connais la solution Codeblocks mais je suis habitué à taper sur gedit et j'aime bien mes habitudes
    je finirai par trouver sinon...

  8. #7
    polo974

    Re : Compiler du C avec gcc windows 8.

    heuu...
    as-tu lu la fin de mon premier message ? ? ?
    Jusqu'ici tout va bien...

  9. #8
    invitec3b608ea

    Re : Compiler du C avec gcc windows 8.

    Bonjour,

    Oui, bien sûr, mais ce n'était pas cette manipulation qui posait problème. C'était une histoire de package finalement (je les cherchais manuellement et ils sont disponibles avec l'installeur)...

    Si jamais, le tuto officiel détaille bien les étapes: http://www.mingw.org/wiki/Getting_Started

    Merci pour votre aide

  10. #9
    invitec3b608ea

    Re : Compiler du C avec gcc windows 8.

    Bonjour, excusez-moi de ressortir ce sujet, mais, finalement, je m'en suis pas si bien sorti...

    En fait gcc accepte de compiler du code relativement simple mais, j'essaye de me remettre les listes chainées dans les doigts avec openclassroom:

    Code:
    Liste *liste = malloc(sizeof(*liste)); 
    Element *element = malloc(sizeof(*element)); 
    
    element->nombre = 0; 
    element->suivant = NULL; 
    liste->premier = element;
    et ce genre de petit bout de code déclenche des erreurs de compilation qui ressemble à:

    initializer element is not constant

    ou encore

    expected '=',',',';','asm' or'attribute before '->'

    Et donc le compilateur semble ne pas aimer qu'on affecte à une variable une fonction (a=malloc() p.ex) et ne me laisse pas utiliser les pointeurs.

    J'ai tenté d'installer Code Block afin de voir si la version de gcc de celui-ci fonctionnerait mais le problème reste le même du coup j'ai téléchargé plusieurs packages relatifs à gcc mais rien n'y fait...

    En ce moment je crois que tous les éléments sont présents surl'ordinateur pour compiler mais qu'il faut jouer sur les options de gcc:

    https://gcc.gnu.org/onlinedocs/gcc/C...ialect-Options

    en jouant avec des éléments comme sur ce lien.

    J'ai bien tenté des gcc -std=c99 -executable.c mais pour l'instant rien... Bref, je nage dans le potage.

    Voyez-vous le problème?

    Bien à vous tous et bonne journée!

  11. #10
    Jack
    Modérateur

    Re : Compiler du C avec gcc windows 8.

    Tu alloues de la mémoire en calculant la taille du pointeur au lieu de celle de l'élément.
    Essaie avec:
    Code:
    Element *element = malloc(sizeof(element));
    Même problème avec ta liste
    Pourquoi as-tu un type Liste et un type Element? Tu devrais montrer leur déclaration.
    Dernière modification par Jack ; 09/02/2016 à 11h08.

  12. #11
    invitec3b608ea

    Re : Compiler du C avec gcc windows 8.

    Les déclarations:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Element Element; 
    struct Element
    {
        int nombre; 
        Element *suivant; 
    };
    
    
    typedef struct Liste Liste;   
    struct Liste
    {
        Element *premier;
    };
    J'ai changé quelque chose depuis tout à l'heure, en installant codeblocks-16.01mingw-setup.exe j'ai modifié le path pour que gcc soit une commande issue du dossier de ce codeblocks (qui était en taille plus conséquent que tout ce que j'avais avant)...


    Bref, merci Jack, j'ai bien essayé tes modifications (par ailleurs mes anciens codes contiennent des listes chainées sous la forme exposée ci-dessus...) qui, avec ce nouveau gcc, ne se distinguent pas de la version pointeur. J'ai maintenant les messages d'erreurs suivants:

    Nom : erreurs.jpg
Affichages : 104
Taille : 68,6 Ko

  13. #12
    Jack
    Modérateur

    Re : Compiler du C avec gcc windows 8.

    Je ne comprends pas l'intérêt du type Liste Pourquoi une structure ne comportant qu'un seul champ?

    Essaie ceci:
    Code:
    typedef struct Element
    {
        int nombre; 
        Element *suivant; 
    };
    
    //...
    
    Element* liste = NULL; 
    Element *element = malloc(sizeof(element)); 
    
    Element->nombre = 0; 
    element->suivant = NULL; 
    liste = element;
    Dernière modification par Jack ; 09/02/2016 à 11h50.

  14. #13
    invitec3b608ea

    Re : Compiler du C avec gcc windows 8.

    Concernant la structure, je suis un tutoriel qui reprend les listes chainées "depuis le début" et il s'agit d'une forme générale prévue pour que l'on puisse ajouter ce que l'on veut ultérieurement.

    Après avoir testé votre code j'obtiens les erreurs suivantes (identiques pour mes deux compilateurs) :Nom : erreurs.jpg
Affichages : 104
Taille : 94,1 Ko

    et j'ai vraiment tendance à croire que ce sont les compilateurs qui défaillent...sans que je sache pourquoi.

    (pour compiler je fais simplement gcc code.c)

  15. #14
    invitec3b608ea

    Re : Compiler du C avec gcc windows 8.

    En revanche j'ai tenté d'écrire votre structure
    Code:
    typedef struct Element Element
    struct Element{
        int nombre; 
        Element *suivant; 
    };
    et alrs les erreurs sont celles décrites msg 11...

  16. #15
    Jack
    Modérateur

    Re : Compiler du C avec gcc windows 8.

    Je n'avais pas testé le code précédent.
    Essaie avec celui-ci:
    Code:
    #include<stdio.h>#include<stdlib.h>
    
    
    typedef struct Element
    {
        int nombre;
        struct Element *suivant;
    }Element;
    
    
    int main ()
    {
    
    
    	Element* liste = NULL;
    	Element *element = malloc(sizeof(element));
    
    
    	element->nombre = 0;
    	element->suivant = NULL;
    	liste = element;
    
    
    	return 0;
    }

  17. #16
    invite1c6b0acc

    Re : Compiler du C avec gcc windows 8.

    A part ça, "invalid conversion from 'void*' to 'Liste*'" signifie simplement que malloc ne renvoie pas un pointeur de type Liste* (évidemment ...) et qu'il faut donc écrire explicitement le transtypage :
    Element *element = (Element*) malloc (sizeof(*element));

  18. #17
    Jack
    Modérateur

    Re : Compiler du C avec gcc windows 8.

    C'est obligatoire avec un compilateur C++, mais il me semble que ça ne l'est pas en C.

  19. #18
    invite1c6b0acc

    Re : Compiler du C avec gcc windows 8.

    Citation Envoyé par Jack Voir le message
    C'est obligatoire avec un compilateur C++, mais il me semble que ça ne l'est pas en C.
    Tout à fait d'accord.
    Ce code :
    Code:
    #include <stdlib.h>
    int main ()
            {
            int * p;
            p = malloc (10);
            return 0;
            }
    ne donne pas d'erreur si le fichier source s’appelle cast.c
    mais s'il s'appelle cast.cpp, ça donne : "cast.cpp:5:16: erreur: invalid conversion from ‘void*’ to ‘int*’ [-fpermissive]"

    Curuxa, comment s’appelle ton fichier source ?

  20. #19
    invitec3b608ea

    Re : Compiler du C avec gcc windows 8.

    Bonsoir,

    Merci énormément à vous deux Chanur et Jack! Votre aide m'a fait me sentir moins seul (je suis toujous désespéré quand le pc ne fait pas ce que je lui demande et qu'à priori "tout va bien"), je me suis rendu au pool des facs où les ordis sont sur linux pour tester mon code...qui n'allait toujours pas. J'ai essayé avec le bout de code de Jack qui fonctionnait...

    Bon...je dois m'être un peu trop habitué à Matlab car j'ai tout simplement oublié d'encadrer le code par une structure de type int main(){}. Du coup ça fonctionne (sur mon pc aussi) et il n'y avait pas de problème de compilateur.

    Je me sens bien bête...En tout cas un énorme merci encore une fois!

Discussions similaires

  1. comment compiler avec mplab
    Par invite434a93d6 dans le forum Électronique
    Réponses: 9
    Dernier message: 22/10/2013, 18h27
  2. Compiler CPU avec Xilinx Webpack
    Par invite20791c0c dans le forum Électronique
    Réponses: 3
    Dernier message: 23/10/2009, 10h28
  3. programmmation PIC avec logiciel PIC C Compiler
    Par invite298957c6 dans le forum Électronique
    Réponses: 0
    Dernier message: 09/11/2008, 10h13
  4. compiler un fichier.tex avec miktex
    Par invite949694a5 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 12/03/2008, 16h58
  5. compiler un programme assembleur avec le DOS
    Par invite0b127ea6 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 05/09/2006, 11h47