Salut,
Le titre résume tout. Je voudrais savoir comment on rajoute des bibliothèques dans un makefile et à quel moment on y place le chemin.????
Merci
Salut,
Le titre résume tout. Je voudrais savoir comment on rajoute des bibliothèques dans un makefile et à quel moment on y place le chemin.????
Merci
Salut,
il n'y a rien plus facile (biensur si tu le sais...)
Il existe deux parameters:
"-l" ajoute une bibliotheque
"-L" ajoute une chemin
Dans mon project j'ai besoin d'utiliser la bibliotheque pour SQLite, donc j'ai ecrit :
LOADLIBES := -lm -L/opt/sqlite-3.3.4/.libs -lsqlite3
Le nom de bibliotheque IL FAUT ECRIRE SANS "lib" et suffixe ( quand meme le fichier s'appelle libsqlite3.so ).
Bonne chance. Fredy
Oui mais a quel moment tu mets le chemin spécifique??
Peux tu me montrer ton make au complet stp???
en faite lorsque j'utilise mon makefile sur une machine ubuntu je n'ai pas de soucis par contre lorsque je l'utilise sur une machine fedora il y a des problemes car il ne reconnait pas la bibli GTK
Voici le make
(En faite je reutilise un make fournit par franck)
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 # # Variables: # CC = gcc BIN = Recepteur SRC = interface_main.c copy_data.c Quitter.c Verification.c lecture_data.c files_attenuation.c OBJ = interface_main.o copy_data.o Quitter.o Verification.o lecture_data.o files_attenuation.o # # Flags d'erreurs: # ERROR_CFLAGS = -Wall -W -pedantic -g -03 # # Flags pour le compilateur: # GLIB_CFLAGS = $$(pkg-config --cflags glib-2.0) PANGO_CFLAGS = $$(pkg-config --cflags pango) GTK_CFLAGS := $$(pkg-config --cflags gtk+-2.0) CFLAGS = $(ERROR_FLAGS) $(GLIB_CFLAGS) $(PANGO_CFLAGS) $(GTK_CFLAGS) # # Flags pour l'editeur de liens: # GLIB_LDFLAGS = $$(pkg-config --libs glib-2.0) PANGO_LDFLAGS = $$(pkg-config --libs pango) GTK_LDFLAGS = $$(pkg-config --libs gtk+-2.0) LDFLAGS = $(ERROR_FLAGS) $(GLIB_LDFLAGS) $(PANGO_LDFLAGS) $(GTK_LDFLAGS) # # Construction du programme: # all: $(BIN) $(BIN): $(SRC) $(CC) $(CFLAGS) -c $(SRC) $(CC) $(LDFLAGS) -o $(BIN) $(OBJ) # # Nettoyage: # clean: rm -f *.o *~ core $(BIN)
Je ne comprends pas pourquoi ici ce make marche sous ubuntu est il n'ya aucun chemin????
De meme pouvez vous m'expliquer cette partie du code
Merci
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 # Flags pour le compilateur: # GLIB_CFLAGS = $$(pkg-config --cflags glib-2.0) PANGO_CFLAGS = $$(pkg-config --cflags pango) GTK_CFLAGS := $$(pkg-config --cflags gtk+-2.0) CFLAGS = $(ERROR_FLAGS) $(GLIB_CFLAGS) $(PANGO_CFLAGS) $(GTK_CFLAGS) # # Flags pour l'editeur de liens: # GLIB_LDFLAGS = $$(pkg-config --libs glib-2.0) PANGO_LDFLAGS = $$(pkg-config --libs pango) GTK_LDFLAGS = $$(pkg-config --libs gtk+-2.0) LDFLAGS = $(ERROR_FLAGS) $(GLIB_LDFLAGS) $(PANGO_LDFLAGS) $(GTK_LDFLAGS)
Est-tu sûr que GTK+ est bien installé sur la Fedora ? J'entend par là, pas que les runtimes mais les fichiers de développement également ! Vérifié également que pkg-config soit installé !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Ca initialise des variables comme par exemple ceci:Envoyé par insa59
Rempli la variable avec le résultat de la commande pkg-config --cflags glib-2.0 ce qui donne sur ma console:
Code : Sélectionner tout - Visualiser dans une fenêtre à part GLIB_CFLAGS = $$(pkg-config --cflags glib-2.0)
Ca fait de même pour les autres variables. Les deux catégories correspondent en fait dans l'ordre à:
Code : Sélectionner tout - Visualiser dans une fenêtre à part -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
- Les chemins des fichiers d'en-tête et leur différents chemins pour que le compilateur sache où les trouver pour réussir à compiler correctement.
- Le second bloc ne fournit quant à lui pas le chemin mais les différentes bibliothèques de fonctions à lier au fichier exécutable (des fichiers *.lib, *.a, *.o même parfois) !
En espérant avoir pû t'aider
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
désolé d'insister mais je n'arrive pas a bien comprendre le makefile.
1- J'aimerai savoir comment on fait pour rajouter les librairies GTK dans notre makefile
Je dispose deja de celui de ci dessus mais je n'arrive pas a comprendre a quelle moment on rajoute les bibliotheque durant la compilation et l'edition de lien
(il n'y a pas de chemin spécifié)
2- Une autre question : j'ai mon IHM qui a son makefile, cette IHM utilise des fichiers d'un sous répertoire qui ont leurs propre makefile. Je voulais savoir comment je devais faire pour la compilation des 2 makefiles
Peut on utilisé un makefile maitre pour l'IHM et un makefile esclave pour le makefile du fichier ( idée dans le tuto suivant)
Merci pour votre aide
Il n'y a rien à rajouter, y'a tout ce qu'il faut pour compiler un projet GTK+ ! Si le Makefile fonctionne sur une distribution mais pas sur une autre cela ne viens en aucun cas du Makefile mais de l'installation (possiblement mal faite) de GTK+ sur la distribution en cause !Envoyé par insa59
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
okie tu dois surement avoir raison
mais comment je peux savoir si Gtk et bien installer??
en tapant la commande suivante??
pkg-config --modversion gtk=-2.0
Ho je pense qu'en testant les chemins des répertoires d'inclusion devrait suffir:Envoyé par insa59
Tu devrais avoir une sortie de ce genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part pkg-config --cflags glib-2.0 && pkg-config --cflags pango && pkg-config --cflags gtk+-2.0
A savoir que seul:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
pour le compilateur et
Code : Sélectionner tout - Visualiser dans une fenêtre à part pkg-config --cflags gtk+-2.0
pour l'édition des liens devraient suffir donc on peut éventuellement omettre les deux autres lignes de chaque groupes
Code : Sélectionner tout - Visualiser dans une fenêtre à part pkg-config --libs gtk+-2.0
Ta commande:
Te dis quelle version de GTK+ est installée mais par forcément si les fichiers de développement le sont !
Code : Sélectionner tout - Visualiser dans une fenêtre à part pkg-config --modversion gtk+-2.0
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
d'accord mais je dois obtienir quoi en tapant cette commande ???
pkg-config --cflags glib-2.0 && pkg-config --cflags pango && pkg-config --cflags gtk+-2.0
desolé je n'avais pas vue la suite
par contre pour la question 2 que je pose a tu une idée stp??
Je n'ais jamais mis ne place une compilation de ce genre par le biais des Makefile mais si c'est pas toi qui les as fait, par exemple un générateur d'un EDI, il te suffit de compilaer avec make depuis le répertoire racine où se situe le Makefile principal, il se chargera d'appeler les autres dans les sous-répertoiresEnvoyé par insa59
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Une petite mise à jour du Makefile avec ce que j'ai dit plus haut pourrait être:
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 # # Variables: # CC = gcc BIN = Recepteur SRC = interface_main.c copy_data.c Quitter.c Verification.c lecture_data.c files_attenuation.c OBJ = interface_main.o copy_data.o Quitter.o Verification.o lecture_data.o files_attenuation.o # # Flags d'erreurs: # ERROR_CFLAGS = -Wall -W -pedantic -g -03 # # Flags pour le compilateur: # GTK_CFLAGS = $$(pkg-config --cflags gtk+-2.0) CFLAGS = $(ERROR_FLAGS) $(GTK_CFLAGS) # # Flags pour l'editeur de liens: # GTK_LDFLAGS = $$(pkg-config --libs gtk+-2.0) LDFLAGS = $(ERROR_FLAGS) $(GTK_LDFLAGS) # # Construction du programme: # all: $(BIN) $(BIN): $(SRC) $(CC) $(CFLAGS) -c $(SRC) $(CC) $(LDFLAGS) -o $(BIN) $(OBJ) # # Nettoyage: # clean: rm -f *.o *~ core $(BIN)
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
c'est a dire que je peux avoir plusieurs makefile dans un repertoire???
Car comme tu as compris je ne souhaite pas toucher au makefile du fichier car il fait 15 pages c'est de la folie!!!
Je souhaite simplement pouvoir compiler le make de mon IHM et ensuite celui du fichier
Non, que un seul par répertoires qui contient des modules de compilation que t veux compiler avec ton projet.Envoyé par insa59
Ca sent le Makefile généré par Glade ou Anjuta ou un programme de ce genreEnvoyé par insa59
Si tu veux les compiler à part sans passer par un autre Makefile bin fait simplement un Makefile par répertoire mais alors il faut que tu fasse au moins une copie des autres. Mais je ne vois pas vraiment l'intérêt, un projet est un tout et tout est lié.Envoyé par insa59
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Comme j'ai essayé d'expliquer je dispose du makefile de l'IHM et de celui du big fichier
Pour cela je mets dans un repertoire le programme IHM et dans un sous repertoire le big fichier.
ensuite lorsque j'effectue la compilation je me situe dans le repertoire IHM pour lancer la commande make
Je voulais donc savoir si le makefile IHM devais specifier la présence d'un autre makefile dans le sous repertoire si oui quelle est la commande ????
Donc ton but est de compiler le tout automatiquement en partant du Makefile de ton IHM ! C'est ce que j'avais comprisEnvoyé par insa59
Là, je suis désolé mais je ne suis pas aussi expert que ca en Makefile Je pense qu'il n'y pas de commande mais qu'il suffit simplement d'aller dans ce répertoire et d'y lancer la commande make depuis ton Makefile du répertoire parent...
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
euh ...
en faite je ne sais pas si je dois appeler en faite le makefile du sous repertoire ??
je voulais simplement savoir si en tapant la commande make j'allais compiler le makefile de l'IHM et celui qui est dans le sous repertoire???
Non ca il faut le spécifier dans le Makefile appelant !Envoyé par insa59
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager