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 :

Makefile: compiler un programme qui accède à MySql


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 60
    Points : 41
    Points
    41
    Par défaut Makefile: compiler un programme qui accède à MySql
    bonjour,
    je développe une application en c sous linux ,mais voila quand je compile avec >#make
    le resultat:make:***pas de règle pour fabriquer la cible << -lmysqlclient>>,

    comment je peut résoudre ce problème?
    voici mon fichier make:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CC=cc
    CFLAGS= -g -Wall -Iinclude
    SHLIBS=-lpcap -ldl
     
    CLEARX = rm -f *~ *core* *pid
     
    MYI = -I/usr/include/mysql
    MYLIBS = -L/usr/include/mysql/ -lmysqlclient 
     
    OBJS=   reqsql.o $(mysql_config --cflags) -lmysqlclient   \
        main.o  ......... 
    ....
    le fichier reqsql.c est le seul qui intervient sur la base
    la base mysql que j'utilise est 4.1

  2. #2
    Membre averti Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Points : 414
    Points
    414
    Par défaut
    Citation Envoyé par kh12040 Voir le message
    bonjour,
    je développe une application en c sous linux ,mais voila quand je compile avec >#make
    le resultat:make:***pas de règle pour fabriquer la cible << -lmysqlclient>>,

    comment je peut résoudre ce problème?
    voici mon fichier make:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CC=cc
    CFLAGS= -g -Wall -Iinclude
    SHLIBS=-lpcap -ldl
     
    CLEARX = rm -f *~ *core* *pid
     
    MYI = -I/usr/include/mysql
    MYLIBS = -L/usr/include/mysql/ -lmysqlclient 
     
    OBJS=   reqsql.o $(mysql_config --cflags) -lmysqlclient   \
        main.o  ......... 
    ....
    le fichier reqsql.c est le seul qui intervient sur la base
    la base mysql que j'utilise est 4.1

    Dans la variable OBJS, on ne met pas les bibliothèques a charger, mais les objets a compiler ( en générale c'est les noms des fichiers *.c en remplacant le .c par .o)

    Donc la commande make, n'a pas put traiter l'objet -lmysqlclient, qui est n'est pas un fichier .c a compiler................

    RQ: il y a déja l'importation de la bibliothèque mysqlclient dans la variable MYLIBS.

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 60
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par cmoibal Voir le message
    Dans la variable OBJS, on ne met pas les bibliothèques a charger, mais les objets a compiler ( en générale c'est les noms des fichiers *.c en remplacant le .c par .o)

    Donc la commande make, n'a pas put traiter l'objet -lmysqlclient, qui est n'est pas un fichier .c a compiler................

    RQ: il y a déja l'importation de la bibliothèque mysqlclient dans la variable MYLIBS.
    quand j'enlève -lmysqlclient j aurai 15 erreur dans la compilation du fichier reqsql.c de type: undefined reference to mysql_....

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Ce ne sont pas des erreurs de compilation, mais d'édition de liens.

    Tu dois rajouter l'option -lmysqlclient, mais à un autre endroit du makefile: Les options d'édition de liens.

  5. #5
    Membre averti Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Points : 414
    Points
    414
    Par défaut
    postez le Makefile pour que je puissent mieux t'aider !!!!!!

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 60
    Points : 41
    Points
    41
    Par défaut
    voici 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    CC=cc
    CFLAGS= -g -Wall -Iinclude
    SHLIBS=-lpcap -ldl
     
    CLEARX = rm -f *~ *core* *pid
     
    MYI = -I/usr/include/mysql
    MYLIBS = -L/usr/include/mysql/ -lmysqlclient 
     
    OBJS=   reqsql.o $(mysql_config --cflags) -lmysqlclient   \
        projet1.o   enregistreur.o recupere.o demarer.o gestion.o   decodage.o   \
          
     
    all:   projet1
     
    projet1: $(OBJS)
    	$(CLEARX)
    	$(CC) -g -o projet1 $(CFLAGS) $(LDFLAGS) $(OBJS) $(STLIBS) $(SHLIBS)
     
    install:
     
    cls:
    	$(CLEARX)
     
    clean:
    	$(CLEARX)
    	rm -f projet1 $(OBJS) *.o *.so *~

  7. #7
    Membre averti Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Points : 414
    Points
    414
    Par défaut
    voici la correction :
    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
    29
     
     
    CC=cc
    CFLAGS= -g -Wall -Iinclude
    SHLIBS=-lpcap -ldl
     
    CLEARX = rm -f *~ *core* *pid
     
    MYI = -I/usr/include/mysql
    MYLIBS = -L/usr/include/mysql/ -lmysqlclient 
     
    OBJS=   reqsql.o $(mysql_config --cflags)   \
        projet1.o enregistreur.o recupere.o demarer.o gestion.o decodage.o
     
     
    all:   projet1
     
    projet1: $(OBJS)
    	$(CLEARX)
    	$(CC) -o $^ $(CFLAGS) $(LDFLAGS) $(MYI) $(MYLIBS) $(OBJS) $(STLIBS) $(SHLIBS)
     
    install:
     
    cls:
    	$(CLEARX)
     
    clean:
    	$(CLEARX)
    	rm -f projet1 $(OBJS) *.o *.so *~

    mais c'est quoi $(mysql_config --cflags) ?????????????

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 60
    Points : 41
    Points
    41
    Par défaut
    merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/09/2011, 23h39
  2. Réponses: 8
    Dernier message: 04/03/2008, 23h30
  3. Connaitre le programme qui accède à un fichier
    Par SnakeNET256 dans le forum Administration système
    Réponses: 2
    Dernier message: 20/02/2008, 14h47
  4. programme qui ne se compile plus
    Par sissi25 dans le forum NetBeans
    Réponses: 2
    Dernier message: 19/04/2007, 17h33
  5. [Makefile] Compilation avec librairie Mysql
    Par lexase dans le forum Systèmes de compilation
    Réponses: 8
    Dernier message: 09/02/2007, 18h42

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