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 :

gcc : lier 2 .o pour en faire un .o


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
    Mars 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Par défaut gcc : lier 2 .o pour en faire un .o
    Bonjour tout le monde

    J'ai 3 fichier A.c, B.c et C.c , A utilise des fonctions de B et B des fonctions de C et j'aimerais compiler le tout mais là ou je bloque c'est pour compiler B.o . j'utilise un make file du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    A : A.o B.o
       gcc -o A A.o B.o
     
    A.o : A.c
       gcc -o A.o -c A.c
     
    B.o : ????????????
    ???????????????
     
    C.o : C.c
       gcc -o C.o -c C.c
    mon problème se trouve pour compiler B.o, je n'ai jamais réussi a lier 2 .o pour en faire un .o ou à compiler un .c en spécifiant qu'il faut le lier à un .o . Bref est-ce que vous avez la solution ?

  2. #2
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Par défaut Re: gcc : lier 2 .o pour en faire un .o
    ceci devrait faire l'affaire ou alors j'ai mal compris et dans ce cas la reexplique en donnant un peu plus de detail.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    A : A.o B.o C.o
       gcc -o A A.o B.o C.o
     
    A.o : A.c
       gcc -o A.o -c A.c
     
    B.o : B.c
       gcc -o B.o -c B.c
     
    C.o : C.c
       gcc -o C.o -c C.c

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Par défaut
    j'ai essayé le makefile mais ça ve veut pas fonctionner
    mon make file est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    telecom : telecom.o rm01api.o rm01lib.o
    	g++ -lcurses -o telecom telecom.o rm01api.o rm01lib.o
    telecom.o : telecom.c
    	g++ -o telecom.o -c telecom.c
    rm01api.o : rm01api.cpp
    	g++ -o rm01api.o -c rm01api.cpp
    rm01lib.o : rm01lib.c
    	gcc -o rm01lib.o -c rm01lib.c
    où A = telecom
    B = rm01api
    C = rm01lib

    telecom utilise des fonctions de rm01api qui elle-même utilisent des fonctions de rm01lib
    lors du make j'ai des erreurs du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    g++ -lcurses -o telecom telecom.o rm01api.o rm01lib.o
    telecom.o(.text+0x0): défini pour la première fois ici
    rm01api.o(.text+0x1f): In function `rm01_reinit(unsigned short)':
    : undefined reference to `rm01_reset()'
    rm01api.o(.text+0x32): In function `rm01_reinit(unsigned short)':
    : undefined reference to `rm01_unlock(unsigned char)'
    rm01api.o(.text+0x37): In function `rm01_reinit(unsigned short)':
    : undefined reference to `rm01_setdac()'
    où rm01_reset, rm01_unlock rm01_setdac appartiennent à rm01lib.c
    et cela pour tout les appels aux fonctions de rm01lib

    sinon est-ce que ça peut venir du mélange de c et cpp (le fichier en cpp est en cpp uniquement pour les arguments par defaults) ?

  4. #4
    HRS
    HRS est déconnecté
    Membre chevronné
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Par défaut
    dans votre makefile, remplacez

    gcc -o rm01lib.o -c rm01lib.c

    par

    g++ -o rm01lib.o -c rm01lib.c

    ----------------------------

    ou alors, dans votre rm01lib.h (s'il existe), encadrez le par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #ifdef __cplusplus
    extern "C" {
    #endif
    //
    //
    #ifdef __cplusplus
    }
    #endif

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Par défaut
    MERCI cétait ça, j'ai réussis à compiler

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

Discussions similaires

  1. Que coder pour se faire la main
    Par Celelibi dans le forum Débuter
    Réponses: 12
    Dernier message: 27/10/2006, 13h25
  2. Reformatter un doc word pour en faire des copies d'écran
    Par titouille dans le forum VBA Word
    Réponses: 4
    Dernier message: 22/09/2005, 18h21
  3. Réponses: 6
    Dernier message: 27/04/2005, 15h46
  4. [C#] Concatener 2 variables pour en faire une 3ème
    Par Thomas Lebrun dans le forum Windows Forms
    Réponses: 6
    Dernier message: 11/05/2004, 21h02
  5. [DOM] parser une String pour en faire un document XML
    Par Fladnag dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 29/03/2004, 11h04

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