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 :

Problème de compilation makefile


Sujet :

C

  1. #1
    Membre expérimenté 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
    Points : 1 311
    Points
    1 311
    Par défaut Problème de compilation makefile
    salut,
    J'ai jamais été expert en C et ça fait très longtemps que j'en ai pas fait. Aussi aurai-je besoin de vos eclairages.
    j'ai le message suivant quand j'essaie de compiler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ make
    gcc -DMAC_OS_X -o eCR.o -c eCR.c -g
    gcc -o eCR eCR.o -L./libat/ -L./libeCR/ -lat -leCR
    /usr/bin/ld: Undefined symbols:
    _CheckPattern
    _EncodePattern
    _uncompress
    collect2: ld returned 1 exit status
    make: *** [eCR] Error 1
    voici mon makefile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    MACHINE=MAC_OS_X
    all: eCR
    eCR: eCR.o
    	gcc -o eCR eCR.o -Llibat/ -LlibeCR/ -lat -leCR	
    ecoPCR.o: eCR.c
    	gcc -D$(MACHINE) -o eCR.o -c eCR.c -g	
    clean:
    	rm -f *.o
    l'arborescence de mon projet est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    makefile
    eCR.c
    ./libat/libat.a
    ./libeCR/libeCR.a

    Est ce que les options -L et -l s'emploient de cette manière?
    Est ce que cela veut dire qu'il y a un souci dans les librairies?
    merci d'avance pour le coup de main

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par julien.63
    [...]
    Est ce que les options -L et -l s'emploient de cette manière?
    [...]
    Leur ordre peut avoir de l'importance.
    Citation Envoyé par [url=http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options]3.13 Options for Linking / -l[i]library[/i][/url]
    It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified.
    Essaye avec :
    Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -Llibat -lat -LlibeCR -leCR -o eCR eCR.o

    Citation Envoyé par julien.63
    Est ce que cela veut dire qu'il y a un souci dans les librairies?[...]
    Difficile à dire vu d'ici. Es-tu certain qu'elles exportent "_CheckPattern", "_EncodePattern" et "_uncompress" ?
    Essaye :
    Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
    for l in libat/libat.a libeCR/libeCR.a ; do { nm "${l}" ; } done | grep -E '_((Check|Encode)Pattern|uncompress)'

  3. #3
    Membre expérimenté 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
    Points : 1 311
    Points
    1 311
    Par défaut
    en bidouillant j'ai fini par compilé le tout.
    voici donc le makefile final. En fait je pense que l'édition des liens ne se faisaient pas correctement. Y'a surement moyen d'optimiser ou de mieux rédiger ce makefile (auquel cas je suis ouvert à vos suggestions) mais là ça à l'air de fonctionner.
    merci pour le coup de 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
    19
    20
    21
    CC=gcc
    CFLAGS= -W -Wall -O2 -g
    LDFLAGS= -lm -r
    EXEC=eCR
    SRC= eCR.c
    OBJ= $(SRC:.c=.o)
    LIBPATH= -Llibat/ -LlibeCR/
    LIB= -lapat -leCR
     
    MACHINE=MAC_OS_X
     
    all: $(EXEC)
     
    eCR: $(OBJ)
    	$(CC) $(LDFLAGS) -o $@ $< $(LIBPATH) $(LIB)
     
    eCR.o: $(SRC)
    	$(CC) -D$(MACHINE) -o $@ -c $< $(CFLAGS)
     
    clean:
    	rm -f *.o

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

Discussions similaires

  1. [PixelMed] Problème de compilation d'un makefile
    Par sellamelie dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 28/11/2013, 10h53
  2. Problème compilation makefile
    Par Cronos59 dans le forum Windows
    Réponses: 0
    Dernier message: 09/01/2009, 09h05
  3. Anjuta sur Debian: problème de compilation Autogen Makefile
    Par sglon dans le forum Systèmes de compilation
    Réponses: 5
    Dernier message: 13/12/2005, 22h00
  4. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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