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

Autres éditeurs Discussion :

Problème d'édition de lien


Sujet :

Autres éditeurs

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Par défaut Problème d'édition de lien
    Bonjour,

    Mon problème est surement classique mais je me tape un "undefined reference to" lors d une compilation.

    Les fichiers en jeu

    le makefile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    all: finger.exe
     
    finger.exe:	restaure.h finger.c restaure.o
    	gcc finger.c restaure.o -o finger.exe -lm
     
    restaure.o:	mcutil.h mcimage.h mccodimage.h restaure.h restaure.c mccodimage.c mcimage.c		
    	gcc -c restaure.c mccodimage.c mcimage.c -o restaure.o
     
    clean:
    	rm -f *.o
    	rm -f *~
    finger.c (contient le main)
    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
     
    #include <stdio.h>
    #include <sys/types.h>
    #include "restaure.h"
     
     
    int main(int argc,char *argv[])
    {
     if(argc !=3)
     {
      fprintf(stderr, "usage: %s empreintescannée.pgm squeletteempreinte.pgm \n", argv[0]);
        return 0;
     }
     
    restaure(argv[1],0.7,argv[2]);
     
    return 0;
    }
    restaure.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    extern int lrao3(struct xvimage *, double, double **);
    extern void lgeneslin(int, int *, int *);
    extern void lgenmask(int, struct xvimage **);
    extern int restaure(char *, double, char *);
    restaure.c contient ttes les fonctions du restaure.h et son .o se compile a priori normalement.

    Voila l erreur obtenu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    pascal@Pascal:~/PR302/Finger/Main/finger$ make all
    gcc -c restaure.c mccodimage.c mcimage.c -o restaure.o
    restaure.c: In function ‘restaure’:
    restaure.c:335: attention : pointer targets in assignment differ in signedness
    restaure.c:376: attention : incompatible implicit declaration of built-in function ‘memcpy’
    gcc finger.c restaure.o -lm -o finger.exe
    /tmp/ccw74nPq.o: dans la fonction « main »:
    finger.c:(.text+0x67): référence indéfinie vers « restaure »
    collect2: ld a retourné 1 code d'état d'exécution
    make: *** [finger.exe] Erreur 1
    A noter aussi que si dans finger.c je remplace le include restaure.h par restaure.c ca marche nikel.

    Merci d avance de votre aide car la j arrive plus a rien voir ...

  2. #2
    Membre Expert Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    all: finger.exe
     
    finger.exe:	finger.o restaure.o
            gcc -lm finger.o restaurant.o -o finger.exe
     
    finger.o : finger.c finger.h
    	gcc -c finger.c  -o finger.o 
     
    restaure.o:	mcutil.h mcimage.h mccodimage.h restaure.h restaure.c mccodimage.c mcimage.c		
    	gcc -c restaure.c mccodimage.c mcimage.c -o restaure.o
     
    clean:
    	rm -f *.o
    	rm -f *~

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Par défaut
    J ai bien essayé de mettre restaurant mais gcc n a pas tres faim apparemment

    Mise a part ca, ca chie toujours, il affiche encore undefined reference to ...

    Et ce meme en corrigant la ligne pour finger.o qui devrai etre

    finger.o : finger.c restaure.h restaure.c
    gcc -c finger.c restaure.c -o finger.o

  4. #4
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Citation Envoyé par gnto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    all: finger.exe
    
    finger.exe:	finger.o restaure.o
            gcc -lm finger.o restaurant.o -o finger.exe
    
    finger.o : finger.c finger.h
    	gcc -c finger.c  -o finger.o 
    
    restaure.o:	mcutil.h mcimage.h mccodimage.h restaure.h restaure.c mccodimage.c mcimage.c		
    	gcc -c restaure.c mccodimage.c mcimage.c -o restaure.o
    
    clean:
    	rm -f *.o
    	rm -f *~

  5. #5
    Membre Expert Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Par défaut
    oups désolé je devais avoir fin lol

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Kodamas
    restaure.c contient ttes les fonctions du restaure.h et son .o se compile a priori normalement.

    Voila l erreur obtenu
    pascal@Pascal:~/PR302/Finger/Main/finger$ make all
    gcc -c restaure.c mccodimage.c mcimage.c -o restaure.o
    restaure.c: In function ‘restaure’:
    restaure.c:335: attention : pointer targets in assignment differ in signedness
    restaure.c:376: attention : incompatible implicit declaration of built-in function ‘memcpy’
    Tu devrais déjà tirer ça au clair (inclure <string.h>, par exemple...)
    gcc finger.c restaure.o -lm -o finger.exe
    /tmp/ccw74nPq.o: dans la fonction « main »:
    finger.c.text+0x67): référence indéfinie vers « restaure »
    collect2: ld a retourné 1 code d'état d'exécution
    make: *** [finger.exe] Erreur 1
    Montre le .c qui contient restaure. Je soupçonne une faute de frappe
    • restuare à 3/1
    • restore à 10/1
    • restaur à 15/1

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Par défaut
    Arf, j y croyais vraiment à l erreur du "restore", mais en vérifiant il s est avéré que tt était bien orthographié...Et en reflechissant apres, il n aurait pas été logique que restaure.o se compile sans problème si le header et le source était en contradiction...

    En ce qui concerne le code de restaure.c, il fait 400 lignes, je vais eviter de flooder la page avec...

    MAis ce qui reste surprenant, c le fait que tt marche en mettant include restaure.c dans le source finger...

    Mode crackage on ...

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Kodamas
    Arf, j y croyais vraiment à l erreur du "restore", mais en vérifiant il s est avéré que tt était bien orthographié...<...>
    make clean
    make all

    Mais avant ça, il y a un truc pas logique dans ton Makefile. Dans la même commande, tu demandes une compilation et une édition de lien. A ma connaissance, ce n'est pas possible.

    AMA, finger.c n'est jamais compilé...

    Il faut une ligne -c par .c (ou une liste comme tu as fait) En fait cette liste est étrange. Il y a 3 sources et un seule .o ! Ca ne peux pas fonctionner...

    J'en reviens à ma vielle méthode éprouvée : "Il faut une ligne -c par .c "

    Je propose ceci :
    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
     
    all: finger.exe
     
    finger.exe:	finger.o restaure.o mccodimage.o mcimage.o
    	gcc finger.o restaure.o mccodimage.o mcimage.o -o finger.exe -lm
     
    finger.o:	finger.h finger.c
     	gcc -c finger.c -o finger.o
     
    restaure.o:	mcutil.h mcimage.h mccodimage.h restaure.h restaure.c
     	gcc -c restaure.c -o restaure.o
     
    mccodimage.o:	mcutil.h mcimage.h mccodimage.h restaure.h mccodimage.c 
    	gcc -c mccodimage.c  -o mccodimage.o
     
    mcimage.o:	mcutil.h mcimage.h mccodimage.h restaure.h mcimage.c
    	gcc -c mcimage.c -o mcimage.o
     
    clean:
    	rm -f *.o
    	rm -f *~
    En respectant la position des TAB et l'abscence de blancs en fin de lignes.

  9. #9
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    J'en reviens à ma vielle méthode éprouvée : "Il faut une ligne -c par .c "
    Mais pas un .c par ligne!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    finger.exe:	finger.o restaure.o mccodimage.o mcimage.o
    	gcc .c finger.o restaure.o mccodimage.o mcimage.o -o finger.exe -lm

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Par défaut
    c est bon Tout marche nikel avec un objet par .c

    En fait, c est restaure.o qui ne compilait pas et seul finger.c compilait.

    merci tt le monde pour votre aide et plus particulièrement à Manu qui a trouvé la soluce

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par DaZumba
    Mais pas un .c par ligne!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    finger.exe:	finger.o restaure.o mccodimage.o mcimage.o
    	gcc .c finger.o restaure.o mccodimage.o mcimage.o -o finger.exe -lm
    Corrigé ! Merci.

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

Discussions similaires

  1. [Visual Studio .Net 2003]Problème d'édition de liens
    Par Mindiell dans le forum Visual C++
    Réponses: 10
    Dernier message: 25/05/2007, 23h43
  2. [MASM32] Problème à l'édition de liens
    Par theShin dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 01/03/2007, 21h38
  3. [g++] Problème d'édition de liens
    Par glKabuto dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 31/05/2006, 19h10
  4. [Dev-C++] Problème d'édition des liens
    Par shura dans le forum EDI
    Réponses: 5
    Dernier message: 30/08/2005, 09h35
  5. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50

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