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

Systèmes de compilation Discussion :

header dans makefile


Sujet :

Systèmes de compilation

  1. #21
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Points : 116
    Points
    116
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    gcc  -mno-cygwin -O2 -I../../library/include -I -Wall -D_GNU_VER -DETEST_C -o /p
    aram.exe obj/param_test.o obj/param.o obj/param_var.o
    obj/param_test.o:param_test.c:(.text+0x305): undefined reference to `_fi
    le_open'
    obj/param_test.o:param_test.c:(.text+0x31b): undefined reference to `_fi
    le_open'
    et apres ca fait cette erreur avec chaque fonction que j'utilise et qui est déclarée dans lib.h

  2. #22
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    file_open c'est une fonction que tu définis toi-même ?
    Si oui, dans quel fichier ?

    Rectification, j'ai comme l'impression que tes .o ont déjà été générés. make ne les regénére pas si les sources n'ont pas changées.

    et apres ca fait cette erreur avec chaque fonction que j'utilise et qui est déclarée dans lib.h
    OK, et il existe un fichier lib.c ?

  3. #23
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Points : 116
    Points
    116
    Par défaut
    C'était bel et bien ca.
    Merci beaucoup car je n'y aurai jamais pensé

    Maintenant l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc  -c -mno-cygwin -O2 -I../../library/include -I -Wall -D_GNU_VER -DETEST_C pa
    param_test.c -o obj/param_test.o
    param_test.c:28:47: param.h: No such file or directory
    Il ne cherche pas dans 'C/param.h' mais directement param.h

  4. #24
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Il ne cherche pas dans 'C/param.h' mais directement param.h
    Non, ce n'est pas très grave. Tu as juste oublié un -IC/ dans tes C flags.

    Si on récapitule, lib.h est dans ../../library/include. Il n'y aurait pas un répertoire ../../library/lib avec un fichier lib.a ou lib.dll.a dedans ou quelque chose comme ça.

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Points : 116
    Points
    116
    Par défaut
    Voici l'archi:

    projet/lib/include/ lib.h lib_ife.h
    projet/lib/source/ lib.c
    projet/projet_param/param/ param_test.c
    projet/projet_param/param/C/ param.c param_var.c param.h


    param.c: depend de lib.h et param.h
    param_var.c: depend de param.h
    param.h: depend de lib.h
    param_test.c: depend de lib.h lib_ife.h et param.h


    je n'ai pas les .a des bibliotheques juste le .h de lib_ife et le .h et .c de lib

    Merci de me donner un coup de main sa fait plaisir

  6. #26
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Personnellement, quand je vois un répertoire lib/, ça veut dire qu'il s'y cache une librairie (dynamique ou statique). Est-ce qu'il y a un Makefile dans le répertoire lib/ pour la générer ?

  7. #27
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Points : 116
    Points
    116
    Par défaut
    Non il n'y a pas.
    lib contient trois dossier :
    un source, un include et un lib mais dans le lib il n'y a pas celles que j'utilise

    Je precise qu'avant de passer par un makefile ce projet compilait et s'executait bien donc je ne pense pas qu'il puisse manquer une lib.

    merci

  8. #28
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Citation Envoyé par sone47 Voir le message
    un source, un include et un lib mais dans le lib il n'y a pas celles que j'utilise
    Et il y a quoi dedans ? Le but du répertoire lib/lib/ est forcément de contenir la librairie dont les sources sont lib/source/lib.c.

    Pour respecter la philosophie du projet, il faut qu'une librairie soit générée dans le répertoire lib/lib/. Ensuite, tu linkes ton exécutable param.exe contre cette librairie.

    Sinon mais ce n'est pas propre, tu peux compiler lib/source/lib.c et l'ajouter à tes trois autres .o mais ce n'est pas du tout propre. Donc, oublie.

    Je precise qu'avant de passer par un makefile ce projet compilait et s'executait bien donc je ne pense pas qu'il puisse manquer une lib.
    Oui sauf qu'il fallait taper toutes les commandes à la main.

  9. #29
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Points : 116
    Points
    116
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ensuite, tu linkes ton exécutable param.exe contre cette librairie
    ok je vais essayer je ne sais pas si c'est possible mais peut etre une des deux lib qu'il y a dans 'library/lib/' contient ma lib.h...
    Et pour linker mon exe sur une lib je n'ai qu'a ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    param.exe : $(objects) $(DLIB)/tool.lib
    	$(CC) $(CFLAGS) -o param.exe $(objects)
    ?

  10. #30
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Il faudrait sérieusement que tu trouves un tutorial pour compiler en ligne de commande. Je ne pensais pas que je devrais te guider à ce point.

    C'est bien de mettre $(DLIB)/tool.lib en tant que dépendance mais il faudrait l'ajouter à la ligne de commande.

    Au passage, pour la même ligne de commande, CFLAGS ne sert à rien. CFLAGS c'est pour compiler. Maintenant, tu linkes. Je remplacerais CFLAGS par une variable LDFLAGS que j'initialiserais ainsi (si je n'oublie rien).

  11. #31
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Points : 116
    Points
    116
    Par défaut
    Oui c'est ce que j'ai fais, du coup j'ai enlevé toutes mes dependances et j'ai modifié mon CFLAGS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CFLAGS = -mno-cygwin -O2 -I$(DSRC) -I$(subst $(space), -I,$(strip $(DINC))) -Wall -D_GNU_VER -DETEST_C
    C'était ca mon probleme j'avais mal géré ces dépendances, je trouve cette maniere beaucoup moins compliquée car on n'a pas a spécifier chaque dépendance on donne juste les directory et lui fait les liens

    Merci beaucoup en ton cas pour ton aide C'est vraiment sympa de ta part

  12. #32
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Sinon, tu as un petit projet sympa, cmake, qui permet de simplifier l'écriture des Makefiles.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Inclusion d'un header lors de la compilation dans Makefile
    Par Kaeguri dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 03/04/2007, 16h23
  2. [MFC] Hauteur du header dans un CListCtrl
    Par ouquoi dans le forum MFC
    Réponses: 2
    Dernier message: 07/02/2006, 14h56
  3. Cacher un header dans une CListCtrl
    Par Psykotik dans le forum MFC
    Réponses: 2
    Dernier message: 19/12/2005, 15h48
  4. [ Wsad ] Comment ignorer $Header$ dans un compare ?
    Par dsi0743 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/12/2005, 17h36
  5. Gestion des headers dans un Makefile
    Par Weren dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 09/11/2004, 10h44

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