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 :

Problème simple de compilation séparée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut Problème simple de compilation séparée
    bonjour , enfaite j'ai 3 fichiers.C main.c voisin.c tableau.c et 2 header voisin.h et tableau.h

    dans le fichier voisin.c j'appel la fonction tableau le probleme c'est que je sais pas comment le traduire dans mon makefile

    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
    16
    17
    #Makefile
     
    jeux.exe: main.o tableau.o voisin.o
     
    	gcc -o jeux.exe tableau.o voisin.o main.o
     
    tableau.o: tableau.h tableau.c
     
    	gcc -Wall -c tableau.c
     
    voisin.o: voisin.h voisin.c tableau.h tableau.c
     
    	gcc -Wall voisin.c 
     
    clean:
     
    	rm -f *.o jeux.exe
    quand je le lance j'ai

    /usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: In function `_start':
    /build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'
    /tmp/ccIGzzNh.o: In function `voisin':
    voisin.c:(.text+0x2e): undefined reference to `affichetbl'
    collect2: ld a retourné 1 code d'état d'exécution
    make: *** [voisin.o] Erreur 1
    merci !

  2. #2
    Membre éclairé

    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2006
    Messages : 73
    Par défaut
    Bonjour,

    Le fichier main.c n'est jamais compilé.
    main.o doit donc être une cible avec pour dépendance main.c.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut
    a oui , j'ecris comme ca ?

    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
    16
    17
    18
    19
    20
    21
    #Makefile
     
    jeux.exe: main.o tableau.o voisin.o
     
    	gcc -o jeux.exe tableau.o voisin.o main.o
     
    main.o: main.c
     
    	gcc -Wall -c main.c
     
    tableau.o: tableau.h tableau.c
     
    	gcc -Wall -c tableau.c
     
    voisin.o: voisin.h voisin.c 
     
    	gcc -Wall voisin.c 
     
    clean:
     
    	rm -f *.o jeux.exe
    mais j'ai toujours des messages d'erreures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    gcc -Wall voisin.c 
    voisin.c: In function ‘voisin’:
    voisin.c:4: attention : implicit declaration of function ‘system’
    voisin.c:7: attention : implicit declaration of function ‘affichetbl’
    voisin.c:19: attention : implicit declaration of function ‘printf’
    voisin.c:19: attention : incompatible implicit declaration of built-in function ‘printf’
    voisin.c:23: attention : incompatible implicit declaration of built-in function ‘printf’
    /usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: In function `_start':
    /build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'
    /tmp/ccaOPkJP.o: In function `voisin':
    voisin.c:(.text+0x2e): undefined reference to `affichetbl'
    collect2: ld a retourné 1 code d'état d'exécution
    make: *** [voisin.o] Erreur 1

  4. #4
    Membre éclairé

    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2006
    Messages : 73
    Par défaut
    Ceci n'est plus un problème de Makefile. Les messages d'erreurs te disent ce qui ne va pas.

    Par exemple, pour la première erreur :
    Dans ton fichier voisin.c, ligne 4, tu as oublié d'inclure le header contenant le prototype de la fonction system (fonction standard situé dans le header stdlib.h).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut
    a ok ! merci je pensai que mettre les librairies dans le main suffisait .

    mais y me reste toujours un message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    gcc -Wall voisin.c 
    /usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: In function `_start':
    /build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'
    /tmp/ccG2dLdt.o: In function `voisin':
    voisin.c:(.text+0x2e): undefined reference to `affichetbl'
    collect2: ld a retourné 1 code d'état d'exécution
    make: *** [voisin.o] Erreur 1

  6. #6
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Dans ta fonction start et dans ta fonction voisin tu dois appeler des fonctions qui ne sont pas définies dans tes headers. Même problème qu'avec stdlib.h
    De plus apparemment dans ta fonction _start tu tentes d'appeler la fonction main. Si c'est le cas ce n'est pas très esthétique ... (d'ailleurs en C++ tu n'as pas le droit d'appeler la fonction main ! )

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut
    j'ai crée aucune fonction start...(je suis en c pas en c++)

    et la seul fois ou je fais appel a une fonction dans voisin c'est la fonction affichetbl

    affichetbl(T,nbligne,nbcolonne);

    et c'est le meme nom que dans le header tableau.h ( je dois inclure le tableau.h dans voisin.c ?)

  8. #8
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Citation Envoyé par chrisdayton Voir le message
    ( je dois inclure le tableau.h dans voisin.c ?)
    Je te répondrais que oui ^^
    Quand tu appelles une fonction il faut que tu inclues le header qui correspond à cette fonction.
    Par exemple si j'appelle 'printf' cette fonction est définie dans stdio.h, donc il faut que j'inclue stdio.h.
    C'est pareil pour tes propres fonctions

Discussions similaires

  1. Problème pour la compilation séparée
    Par mylha dans le forum Débuter
    Réponses: 2
    Dernier message: 29/03/2011, 16h44
  2. problème simple compilation
    Par jo13jo13 dans le forum C++
    Réponses: 4
    Dernier message: 14/03/2011, 00h06
  3. Problème de compilation séparée
    Par vincent.mbg dans le forum C
    Réponses: 5
    Dernier message: 14/06/2010, 10h40
  4. Problème de compilation séparée
    Par orfix dans le forum C
    Réponses: 9
    Dernier message: 25/06/2007, 11h07
  5. Problème de compilation séparée
    Par Kryptonaute dans le forum C
    Réponses: 13
    Dernier message: 16/05/2007, 11h08

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