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 :

Makefile - Besoin d'aide


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Par défaut Makefile - Besoin d'aide
    Bonjour,
    tous d'abord je m'excuse si je n'ai pas poster ma demande d'aide dans la bonne section, je ne sait pas si le langage makefile est un langage a par entière...

    Je travail en ce moment sur un projet en C et voici 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
    all :  util.o carte outils
     
    util.o : Outils/util.c Outils/util.h 
    	gcc -c Outils/util.c -Wall -Werror -Wextra -g
    	cp util.o Outils/
    outils.o : Outils/outils.c Outils/outils.h util.o
    	gcc -c Outils/outils.c -Wall -Werror -Wextra -g 
    outils : outils.o 
    	gcc Outils/*.o -lm -o outils -Wall -Werror -Wextra -g -lncurses
    carte : carte.o 
    	gcc *.o -lm -o carte -Wall -Werror -Wextra -g -lncurses	
    carte.o : carte.c util.o
    	gcc -c carte.c -Wall -Werror -Wextra -g 
     
    clean:
    	rm -f *.o
    	rm -f /Outils/*.o
    Voila comment son organisés mes fichier :
    Un dossier projet contenant :
    -mon makefile,
    -carte.c et carte.h
    -un dossier Outils

    Le dossier Outils contient :
    -outils.c et outils.h
    -util.c et util.h


    Les code carte et outils contiennent toute deux un main et j'aimerai obtenir après compilation deux exécutable distinct(carte et outils), c'est donc pour ça que j'ai mis mes codes outils et util dans un dossier Outils(car "gcc *.o ...." n'accepte qu'un main dans sa liste de fichier *.o afin de creer l'executable) et outils tout comme carte ont un include de util.h.
    Ors le condition du projet demande a ce que la totalité du projet ne se compile qu'en une seul et unique commande make.

    Je pensais avoir trouvé la solution avec ce makefile mais voila, j'obtien l'erreur suivante lors du make :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    gcc -c Outils/util.c -Wall -Werror -Wextra -g
    cp util.o Outils/
    gcc -c carte.c -Wall -Werror -Wextra -g 
    gcc *.o -lm -o carte -Wall -Werror -Wextra -g -lncurses	
    gcc -c Outils/outils.c -Wall -Werror -Wextra -g 
    gcc Outils/*.o -lm -o outils -Wall -Werror -Wextra -g -lncurses
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 0 a un index de symbole 11 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 1 a un index de symbole 12 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 2 a un index de symbole 2 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 3 a un index de symbole 2 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 4 a un index de symbole 11 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 5 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 6 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 7 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 8 a un index de symbole 12 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 9 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 10 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 11 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 12 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 13 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 14 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 15 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 16 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 17 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 18 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 19 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 20 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 21 a un index de symbole 22 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_line): réadressage 0 a un index de symbole 2 invalide
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o: dans la fonction « _start »:
    (.text+0x18): référence indéfinie vers « main »
    collect2: error: ld returned 1 exit status
    make: *** [outils] Erreur 1
    Quelqu'un pourrait me venir en aide? je ne suis pas très doué pour le moment en ce qui concerne les makefile et me renvoyer vers une page de tutoriel ou d'information sur les makefile ne m'aidera pas beaucoup a comprendre d’où viens mon erreur... :/

  2. #2
    Membre régulier
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Par défaut Solution
    Je répond a ma propre question, après avoir chercher un peu j'ai trouvé la solution a mon problème avec ce nouveau 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
    all :  util.o outils
     
    util.o : Outils/util.c Outils/util.h 
    	gcc -c Outils/util.c -Wall -Werror -Wextra -g
    	cp util.o Outils/
    outils.o : Outils/outils.c Outils/outils.h util.o
    	gcc -c Outils/outils.c -Wall -Werror -Wextra -g -o Outils/outils.o
    outils : outils.o 
    	gcc Outils/*.o -lm -o outils -Wall -Werror -Wextra -g -lncurses
    carte : carte.o 
    	gcc *.o -lm -o carte -Wall -Werror -Wextra -g -lncurses	
    carte.o : carte.c util.o
    	gcc -c carte.c -Wall -Werror -Wextra -g 
     
    clean:
    	rm -f *.o
    	rm -f Outils/*.o
    En fait
    ne défini pas le nom de sortie ni l'emplacement mais juste le nom des commandes Shell qui se trouvent en dessous si j'ai bien compris, c'est donc a la commande gcc de préciser ou devra se trouver le résultats ainsi que son nom ; outils.o se retrouvais donc dans le dossier projet au lieu de se trouver dans le dossier Outils, lorsque je l'ai remarqué j'ai compris la source de mon problème.

Discussions similaires

  1. [OCaml] Besoin d'aide pour un makefile
    Par GyZmoO dans le forum Caml
    Réponses: 4
    Dernier message: 23/01/2007, 21h38
  2. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  3. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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