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 :

Modification d'un makefile


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut Modification d'un makefile
    Bonjour à tous,
    Voilà, j'aimerais implanté des librarie dans un programme mais je suis nul en ce qui concerne les makefile, et je ne m'en sors pas...
    Sur le makefile de base, voilà ce que j'ai (et qu'il ne faudra pas modifier) :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    # $Id: Makefile,v 1.5 2008/05/21 20:22:44 mr_brain Exp $
    #
    # Simple makefile for the libk8055 library
    #
    # change this to your distribution default
    # usually /usr/local or /usr
    PREFIX = /usr/local
    CC = gcc
    EXEC = k8055
    VERSION =0.3
    BINDIR = $(PREFIX)/bin
    LIBDIR = $(PREFIX)/lib
    PYLIBDIR = pyk8055
    INCLUDEDIR = $(PREFIX)/include
    MANDIR = $(PREFIX)/man/man1
    OBJS = main.o libk8055.o
    CFLAGS = -O2 -DDAEMON -DVERSION='"$(VERSION)"' -Wall
    LIBS = -lusb -L/usr/lib -lm
    LINK = ln
     
    libk8055.so.$(VERSION): libk8055.o
    	$(CC) -o libk8055.so.${VERSION} $(LIBS) -shared libk8055.o
    	-$(LINK) -sf libk8055.so.${VERSION} libk8055.so
     
    libk8055.o: libk8055.c
    	$(CC) $(CFLAGS) -c -g -fPIC libk8055.c
     
    libk8055.a: libk8055.o
    	ar rvs libk8055.a libk8055.o
     
    libk8055.c: k8055.h
     
    all: k8055_prog libk8055.so.${VERSION} libk8055.a
     
    .PHONY: k8055_prog
     
    k8055_prog: $(OBJS)
    	$(CC) $(OBJS) -o $(EXEC) $(LIBS)
    	# strip $(EXEC)
     
    pylib: $(PYLIBDIR)/libk8055.i libk8055.c
    	export VERSION=$(VERSION); $(MAKE) -C $(PYLIBDIR)
     
    clean:	
    	rm -f *.o libk8055.so libk8055.so.$(VERSION) $(EXEC) libk8055.a
    	@$(MAKE) -C $(PYLIBDIR) clean
     
    install: k8055_prog libk8055.so.$(VERSION)
    	cp -f $(EXEC) $(BINDIR)/
    	if !(test -d $(LIBDIR)); then \
    	  mkdir $(LIBDIR); \
    	fi
    	if !(test -d $(INCLUDEDIR)); then \
    	  mkdir $(INCLUDEDIR); \
    	fi
    	cp -Pf lib* $(LIBDIR)
    	cp -f k8055.h $(INCLUDEDIR)
    	if !(test -d $(MANDIR)); then \
    	  mkdir $(MANDIR); \
    	fi
    	cp -f man/k8055.1.gz $(MANDIR)/
     
    pyinstall: $(PYLIBDIR)/libk8055.i
    	@$(MAKE) -C $(PYLIBDIR) install
     
    uninstall:
    	rm -f $(BINDIR)/$(EXEC) $(LIBDIR)/libk8055* $(INCLUDEDIR)/k8055.h
     
    test: k8055_prog
    	-@killall $(EXEC)
    	./$(EXEC)
    Ce makefile permet de compilé un programme et de l'utiliser sur une carte velleman, d'ou le nombre important de libraries...

    Pour ce qui est de l'ajout que je veux faire, je veux utiliser ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <my_global.h>
    #include <mysql.h>
    Et pour cela, le makefile qui marche est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ALL : client
     
    MYI = -I/usr/include/mysql
    MYLIBS = -L/usr/include/mysql/ -lmysqlclient
     
    client : mysqlclient.c
    	$(CC) -o client mysqlclient.c $(MYI) $(MYLIBS)
     
    clean:
    	-rm -f *.o
    Je voudrais donc juste implenté les 2 "include".
    Merci d'avance.

    Jérémy.

  2. #2
    Membre chevronné 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
    Par défaut
    Citation Envoyé par Djaiii Voir le message
    Je voudrais donc juste implenté les 2 "include".
    Merci d'avance.

    Jérémy.
    la solution est trés simple, il suffit d'ajouter les lib que tu utilse dans la variabale LIB du Makefile et voila.

    Exemple:
    LIBS = -lusb -L/usr/lib -lm /
    -L/usr/include/mysql/ -lmysqlclient

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut
    Cela me marque ceci :

    Makefile:19: *** séparateur manquant . Arrêt.

    La ligne 19 correspond à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -L/usr/include/mysql/ -lmysqlclient

  4. #4
    Membre chevronné 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
    Par défaut
    Citation Envoyé par Djaiii Voir le message
    Cela me marque ceci :

    Makefile:19: *** séparateur manquant . Arrêt.

    La ligne 19 correspond à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -L/usr/include/mysql/ -lmysqlclient

    désolé, mais c'est un exemple j'ai pas mis le bon cractère d'echap ligne

    il faut maitre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LIBS = -lusb -L/usr/lib -lm \
    -L/usr/include/mysql/ -lmysqlclient

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut
    Cela ne marche pas, cela me marque :

    main.c:12:23: erreur: my_global.h : Aucun fichier ou dossier de ce type
    main.c:13:19: erreur: mysql.h : Aucun fichier ou dossier de ce type

    Je n'arrive pas à lui faire voir les include, qui sont pourtant bien dans :

    /usr/include/mysql

  6. #6
    Membre averti
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut
    Parcontre je sais pas si c important, mais le fichier à compilé s'apelle main.c, et non plus mysqlclient.c

  7. #7
    Membre chevronné 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
    Par défaut
    Citation Envoyé par Djaiii Voir le message
    Cela ne marche pas, cela me marque :

    main.c:12:23: erreur: my_global.h : Aucun fichier ou dossier de ce type
    main.c:13:19: erreur: mysql.h : Aucun fichier ou dossier de ce type

    Je n'arrive pas à lui faire voir les include, qui sont pourtant bien dans :

    /usr/include/mysql

    Oui, il te manque bine sure, d'ajouter le chemain des .h.

    Bon, essai ça

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    # $Id: Makefile,v 1.5 2008/05/21 20:22:44 mr_brain Exp $
    #
    # Simple makefile for the libk8055 library
    #
    # change this to your distribution default
    # usually /usr/local or /usr
    PREFIX = /usr/local
    CC = gcc
    EXEC = k8055
    VERSION =0.3
    BINDIR = $(PREFIX)/bin
    LIBDIR = $(PREFIX)/lib
    PYLIBDIR = pyk8055
    INCLUDEDIR = $(PREFIX)/include
    MANDIR = $(PREFIX)/man/man1
    OBJS = main.o libk8055.o
    CFLAGS = -O2 -DDAEMON -DVERSION='"$(VERSION)"' -Wall
    LIBS = -lusb -L/usr/lib -lm -L/usr/include/mysql/ -lmysqlclient
    LINK = ln
    
    INC = -I/usr/include/mysql
    
     
    libk8055.so.$(VERSION): libk8055.o
    	$(CC) -o libk8055.so.${VERSION} $(LIBS) -shared libk8055.o
    	-$(LINK) -sf libk8055.so.${VERSION} libk8055.so
     
    libk8055.o: libk8055.c
    	$(CC) $(CFLAGS) -c -g -fPIC libk8055.c
     
    libk8055.a: libk8055.o
    	ar rvs libk8055.a libk8055.o
     
    libk8055.c: k8055.h
     
    all: k8055_prog libk8055.so.${VERSION} libk8055.a
     
    .PHONY: k8055_prog
     
    k8055_prog: $(OBJS)
    	$(CC) $(INC) $(OBJS) -o $(EXEC) $(LIBS)
    	# strip $(EXEC)
     
    pylib: $(PYLIBDIR)/libk8055.i libk8055.c
    	export VERSION=$(VERSION); $(MAKE) -C $(PYLIBDIR)
     
    clean:	
    	rm -f *.o libk8055.so libk8055.so.$(VERSION) $(EXEC) libk8055.a
    	@$(MAKE) -C $(PYLIBDIR) clean
     
    install: k8055_prog libk8055.so.$(VERSION)
    	cp -f $(EXEC) $(BINDIR)/
    	if !(test -d $(LIBDIR)); then \
    	  mkdir $(LIBDIR); \
    	fi
    	if !(test -d $(INCLUDEDIR)); then \
    	  mkdir $(INCLUDEDIR); \
    	fi
    	cp -Pf lib* $(LIBDIR)
    	cp -f k8055.h $(INCLUDEDIR)
    	if !(test -d $(MANDIR)); then \
    	  mkdir $(MANDIR); \
    	fi
    	cp -f man/k8055.1.gz $(MANDIR)/
     
    pyinstall: $(PYLIBDIR)/libk8055.i
    	@$(MAKE) -C $(PYLIBDIR) install
     
    uninstall:
    	rm -f $(BINDIR)/$(EXEC) $(LIBDIR)/libk8055* $(INCLUDEDIR)/k8055.h
     
    test: k8055_prog
    	-@killall $(EXEC)
    	./$(EXEC)

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

Discussions similaires

  1. Aide modification makefile
    Par Djaiii dans le forum Linux
    Réponses: 0
    Dernier message: 28/05/2008, 09h28
  2. probléme de modification dans makefile
    Par moooona dans le forum Linux
    Réponses: 0
    Dernier message: 09/04/2008, 13h19
  3. [] Datagrid vide après modification des propriétés
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/09/2002, 16h37
  4. Modification de l'évènement OnClick
    Par MrJéjé dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2002, 12h52
  5. Réponses: 11
    Dernier message: 23/07/2002, 14h33

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