IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Compilation séparée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de razily
    Inscrit en
    Février 2009
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 376
    Par défaut Compilation séparée
    Bonjour ,
    voilà j'ai un projet codé sous C::B mais je voulais le tester en ouvrant les fichiers sous Gedit car lors de la demonstration du projet on n'a pas le droit de le tester sous un IDE !!
    et par surprise en ouvrant tous les fichiers avec gedit et en allant vers le terminal pour compiler j'ai un message de ce genre !!
    pourtant les fichiers même s'ils sont separés ils réspectent la norme du langage C

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    main.c:(.text+0x29): undefined reference to `Menu'
    main.c:(.text+0x94): undefined reference to `Initialisation'
    main.c:(.text+0x10f): undefined reference to `DeroulementJeu'
    main.c:(.text+0x167): undefined reference to `ReprendrePartie'
    main.c:(.text+0x171): undefined reference to `LireFichier'
    main.c:(.text+0x184): undefined reference to `rechercheStatJoueur'
    main.c:(.text+0x19a): undefined reference to `AffichageStatJoueur'
    collect2: ld a retourné 1 code d'état d'exécution
    merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Es-tu sûr que la commande de compilation que tu écris dans la console est la même que celle exécutée par Code::Blocks ?

  3. #3
    Membre éclairé Avatar de razily
    Inscrit en
    Février 2009
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 376
    Par défaut
    j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gcc main.c -o executer
    ./executer
    sous code::blocks on appuie juste sur un bouton et çà compile non

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Il va falloir réviser la compilation séparée...

    La compilation séparée signifie que chaque code est compilé séparément avant de tout rassembler à la fin. Donc compiler uniquement main.c ne suffira pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc -c code1.c
    gcc -c code2.c
    gcc code1.o code2.o -o code
    Citation Envoyé par razily Voir le message
    sous code::blocks on appuie juste sur un bouton et çà compile non
    L'EDI n'est qu'une sur-couche censée faciliter le développement des projets en regroupant tous les outils nécessaires (compilateur, debugger, profiler,...). Tout est plus automatique mais rien n'est magique...

  5. #5
    Membre éclairé Avatar de razily
    Inscrit en
    Février 2009
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 376
    Par défaut
    j'ai plusieurs fichiers : Deroulement.c EnregistrerPartie.c ReprendrePartie.c Statistique.c main.c et un fichier Prototype.h

    et j'ai créé mon premier Makefile comme suit mais çà ne marche pas , je ne sais pas trop comment faire , pourtant ce projet c'est à rendre ce soir et tout est près mais il me suffit à régler ce problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    all : Deroulement.o EnregistrerPartie.o ReprendrePartie.o Statistique.o main.o
    		gcc -o main Deroulement.o EnregistrerPartie.o ReprendrePartie.o Statistique.o main.c
     
    Deroulement.o: Deroulement.c Prototype.h
    		gcc -o Deroulement.c -o Deroulement.o
     
    EnregistrerPartie.o: EnregistrerPartie.c Prototype.h
    		gcc -o EnregistrerPartie.c -o EnregistrerPartie.o
     
    ReprendrePartie.o: ReprendrePartie.c Prototype.h
    		gcc -o ReprendrePartie.c -o ReprendrePartie.o
     
    Statistique.o: Statistique.c Statistique.h
    		gcc -o Statistique.c -o Statistique.o
    j'ai ce genre de message en tapant : make all
    sur le terminal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gcc -o Deroulement.c -o Deroulement.o
    gcc: pas de fichier à l'entrée
    make: *** [Deroulement.o] Erreur 1

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Pourquoi utiliser un Makefile alors que tu ne vas compiler ton projet qu'une seule fois ?

  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par razily Voir le message
    j'ai ce genre de message en tapant : make all
    sur le terminal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gcc -o Deroulement.c -o Deroulement.o
    gcc: pas de fichier à l'entrée
    make: *** [Deroulement.o] Erreur 1
    L'option -o permet de définir le fichier de sortie. Ici tu l'utilise avant le fichier objet et avant le fichier source. Il n'y a donc aucun fichier d'entrée et deux fichiers de sortie.
    En outre, c'est l'option -c qui permet de seulement compiler.

    A priori, tu voulais probablement plutôt écrire gcc -c Deroulement.c -o Deroulement.o

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compilation séparée ?
    Par kromartien dans le forum C
    Réponses: 8
    Dernier message: 22/04/2007, 10h41
  2. Compilation séparée avec devc++
    Par javamax dans le forum Dev-C++
    Réponses: 6
    Dernier message: 08/02/2007, 18h56
  3. Compilation séparée
    Par oliv928 dans le forum Dev-C++
    Réponses: 6
    Dernier message: 02/01/2007, 17h41
  4. Compilation séparée sous devcpp
    Par Mic75 dans le forum Dev-C++
    Réponses: 1
    Dernier message: 23/08/2006, 15h33
  5. Compilation séparée avec dev C/C++
    Par benjiprog dans le forum Dev-C++
    Réponses: 5
    Dernier message: 07/11/2005, 18h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo