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 :

création d'un makefile avec une librairie externe


Sujet :

C

  1. #1
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 32
    Points : 17
    Points
    17
    Par défaut création d'un makefile avec une librairie externe
    Bonjour,

    Voila je souhaite créer un makefile qui me compile mon programme qui est une convolution qui utilise une bibliothèque externe (la FFTW) que j'ai installé.

    voila le 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
    CC = gcc
    CFLAGS = 
    # -W -Wall -g
    LDFLAGS =-lfftw3 -lm 
     
    SRC = convolution_FFT.c FFT_routines.c 
    OBJS = $(SRC:.c=.o)
    AOUT = convolution_FFT
     
    all : $(AOUT) 
     
    $(AOUT) : $(OBJS)
        $(CC) $(LDFLAGS) -o $@ $^
    %.o : %.c
        $(CC) $(CFLAGS) -o $@ -c $<
    clean :
        @rm *.o
    cleaner : clean
        @rm $(AOUT)
    J'ai l'erreur suivante : collect2: ld a retourné 1 code d'état d'exécution

    Or, lorsque j'utilise la ligne de commande directe, ça fonctionne correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o convolution_FFT convolution_FFT.c FFT_routines.c -lfftw3 -lm
    Pourriez-vous m'aider à trouver l'erreur dans mon makefile ?

    Merci d'avance

  2. #2
    Membre actif
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    70
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 70
    Points : 204
    Points
    204
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CC = gcc
    CFLAGS = 
    # -W -Wall -g
    LDFLAGS =-lfftw3 -lm
    puis par la suite...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $(AOUT) : $(OBJS)
        $(CC) $(LDFLAGS) -o $@ $^
    ce qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -lfftw3 -lm -o convolution_FFT convolution_FFT.o FFT_routines.o
    et tu as testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o convolution_FFT convolution_FFT.c FFT_routines.c -lfftw3 -lm
    Une petite différence qui fait la différence ? ^^

  3. #3
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Je n'ai pas très bien compris ce que je dois modifier ? tu m'as copié les memes lignes de mon makefile.

    Excuse mon ignorance, je ne maitrise pas encore bien linux.

    Merci d'avance

  4. #4
    Membre actif
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    70
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 70
    Points : 204
    Points
    204
    Par défaut
    Le makefile ne fait qu'écrire ce que tu leur demande

    et ils ne sont pas forcement que pour le language C/C++ ^^

    là je pense que de mettre les option de linkage en premier est une erreur

    met les en fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $(AOUT) : $(OBJS)
        $(CC)  -o $@ $^ $(LDFLAGS)
    et là ça devrait fonctionner.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par neuneutrinos Voir le message
    Le makefile ne fait qu'écrire ce que tu leur demande

    et ils ne sont pas forcement que pour le language C/C++ ^^

    là je pense que de mettre les option de linkage en premier est une erreur

    met les en fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $(AOUT) : $(OBJS)
        $(CC)  -o $@ $^ $(LDFLAGS)
    et là ça devrait fonctionner.
    Tout à fait ! ça marche nikel. Merciiiiiii

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

Discussions similaires

  1. Création d'un makefile avec une librairie externe
    Par sisi_06 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 16/05/2014, 17h09
  2. Créer un apk avec une librairie externe
    Par kapur1000 dans le forum Android
    Réponses: 5
    Dernier message: 20/05/2013, 18h33
  3. Perte de liaison avec une librairie externe.
    Par hesky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/12/2007, 13h29
  4. [Unix] Makefile d'une librairie ?
    Par Vonotar dans le forum Systèmes de compilation
    Réponses: 3
    Dernier message: 13/12/2004, 15h21
  5. Creer et utiliser une librairie externe à l'exécutable
    Par multani dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 06/11/2003, 10h11

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