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 :

inclure bibliotheque dans makefile


Sujet :

Systèmes de compilation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut inclure bibliotheque dans makefile
    Bonjour a tous,
    J'ai un probleme concernant un makefile, j'ai tapé toutes mes lignes de compilation mais arrivé a la fin je me suis demandé comment lier une biblliotheque qui ne se trouve pas dans le meme repertoire? Et comment doit on la lier? Car au debut cette bibliotheque était dans mon repertoire courant donc je l'incluais en debut de mon programme mais maintenant comment faire?

    Du coup je me demande aussi comment compiler avec un makefile plusieur fichiers ne se trouvant pas dans le meme repertoire?
    Merci a tous

  2. #2
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    Dans le cas où tu utilises gcc sous Linux (pour Windows, je ne sais pas, mais ça devrait être pariel) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc prog.c -Lchemin -lXXX -o prog
    chemin est le chemin du répertoire où se trouve la bibliothèque
    et XXX son nom .

  3. #3
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    je me permets d'ajouter un petit détail.
    Sauf erreur de ma part, il faut que le nom de ta librairie soit du précédé de lib et qu'elle ait l'extension .a. Ce qui donnerait libXXX.a
    Mais dans l'option -l, tu n'indiques que le radical, soit -lXXX.
    Ensuite gcc retrouvera ta librairie.

  4. #4
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    Je pense que cela marche également pour des librairies dynamiques, donc avec l'extension .so

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut
    merci pour ces reponses.
    Maintenant si je mets mon 'main' dans un autre repertoire mon fichier de fonctions dans un autre et ma librairie dans un troisieme comment dois je faire? 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    INCLUDE_LIB := ../../Library/lib/tools.lib
    INCLUDE_DIR	:= ../C ../../Library/include
    SRC_DIR 	:= ../C
    MODULE_DIR	:=
     
    CC		= gcc
    CFLAGS	= -W -O2 -Wall 
    LDFLAGS	= -L $(INCLUDE_DIR) libfilter_lib.a 
    EXEC		= Filter
    SRC		= $(wildcard $(SRC_DIR)/* .c)
    OBJ		= $(SRC:.c=.o)
     
    all: 	$(EXEC)
     
    filter: $(OBJ)
    	@$(CC) -o $@ $^ $(LDFLAGS)
     
    Filter_main.o: Filter_func.h Filter_var.h filter_lib.h
    %.o: %.c
    	@$(CC) -o $@ $< $(CFLAGS)
     
    .phony: clean mrproper
     
    clean:
    	@rm -rf *.o
    mrproper: clean
    	@rm -rf $(EXEC)
    mais j'ai des problemes de regles
    Merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut
    Voici mon organisation de repertoire:
    Je voudrai donc que mon makefile compile mon programme contenu dans le dossier C en passant par le main qui lui est dans Etest, les librairies données par mon prof sont dans un autre dossier.
    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    tpC
     |_tp5
     |   |_ C          -> [ contient mes fonctions ] 
     |   |_ Etest     -> [ contient mon main et mon makefile]
     |
     |_Library 
            |___include -> [contien les .h de librairies]
            |___lib       -> [contient un .lib regroupant toute les lib]

Discussions similaires

  1. inclure bibliotheque dans makefile
    Par sone47 dans le forum C
    Réponses: 1
    Dernier message: 05/06/2007, 15h07
  2. inclure jar dans une Applet
    Par inseaiste dans le forum Applets
    Réponses: 6
    Dernier message: 24/07/2006, 14h49
  3. Inclure vi dans un script shell
    Par PierrotY dans le forum Linux
    Réponses: 3
    Dernier message: 18/05/2006, 09h28
  4. inclure installation dans installeur
    Par pitch21 dans le forum Installation
    Réponses: 3
    Dernier message: 24/02/2006, 09h16
  5. [VB.NET] Inclure MSDE dans le package
    Par SergeF dans le forum EDI/Outils
    Réponses: 4
    Dernier message: 24/06/2004, 21h18

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