Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#1 Le 26/08/2013, à 09:48

Blur

[résolu] Makefile

Bonjour à tous,

Voila voila j'aurai aimée savoir comment on utilise Makefile pour compiler une librairie libft.a.

mercii ;-)

Dernière modification par Blur (Le 26/08/2013, à 11:35)

Hors ligne

#2 Le 26/08/2013, à 10:27

tiramiseb

Re : [résolu] Makefile

Salut,

Ça dépend des projets...

Souvent il faut simplement faire :
./configure
make
make install

Mais ça dépend vraiment du projet sur lequel tu travailles, comment il est foutu, ce que tu veux faire précisément, etc.

Cette bibliothèque "libft", tu l'as prise où ?
Peut-on voit à quoi ça ressemble, l'archive que tu as récupérée ?


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#3 Le 26/08/2013, à 10:52

Blur

Re : [résolu] Makefile

salut et merci de t’intéresser à mon problème.
voila ce que j'ai faite jusqu'à présent. je dois utiliser les regle fclean clean re et all le truc c'est que je sais pas encore quoi mettre dedans

  1 all: ft_putchar.o ft_putstr.o ft_strcmp.o ftstrlen.o ft_swap.o
  2         gcc ft_putchar.o ft_putstr.o ft_strcmp.o ftstrlen.o ft_swap.o -o libcomp
  3 
  4 ft_putchar.o: ft_putchar.c
  5         gcc -o ft_putchar.o -c ft_putchar.c
  6 
  7 ft_putstr.o: ft_putstr.c
  8         gcc -o ft_putstr.o -c ft_putstr.c
  9 
 10 ft_strcmp.o: ft_strcmp.c
 11         gcc -o ft_strcmp.o -c ft_strcmp.c
 12 
 13 ft_strlen.o: ft_strlen.c
 14         gcc -o ft_strlen.o -c ft_strlen.c
 15 ft_swap.o: ft_swap.c
 16         gcc -o swap.o -c ft_swap.c
 17 
 18 clean:
 19         rm -rf *.o
 20 fclean:
 21 re:
 22 

Hors ligne

#4 Le 26/08/2013, à 10:56

tiramiseb

Re : [résolu] Makefile

Bon, vu que tu n'as pas répondu clairement à mes questions, je vais essayer de deviner.

Je vais essayer de deviner que c'est le contenu du fichier Makefile.
Je vais aussi essayer de deviner que les numéros de ligne ne sont pas dans le fichier mais que c'est juste pour la présentation que tu les montres.
Je vais aussi essayer de deviner que c'est un Makefile qui est dans l'archive que tu as récupérée et qu'il est bien foutu.

Donc, pour utiliser le contenu d'un fichier Makefile, tu exécutes simplement "make" suivi des règles.
Par exemple :

make clean
make all

Les règles "fclean" et "re" (qui sont en fait la même règle) sont vides, elles ne servent à rien.


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#5 Le 26/08/2013, à 11:04

Blur

Re : [résolu] Makefile

excuse moi je n'ai pas été très clair il est vraie, mais je n'ai pas beaucoup dormie ^^
je vais tenter de t'éclairer:

j'ai un exercice à faire dans le quel je dois construire un Makefile qui compilera :
-> ft_putchar,ft_putstr, ft_strcmp, ft_strlen et ft_swap.

tu as presque tout deviné sauf que le code est de moi puisque c'est mon exo, je ne l'ai pas piquée dans une archive ^^. et pour encore plus de clarté voici les consigne que je dois respecter:

• Écrire le Makefile qui compile votre libft.a.
• Le Makefile ira chercher les fichiers sources dans le dossier srcs.
• Le Makefile ira chercher les fichiers headers dans le dossier includes.
• La lib sera à la racine de l’exercice.
• Le Makefile devra egalement implémenter des règles clean, fclean et re en plus
de la règle all.
• La règle fclean fait l’équivalent d’un make clean et efface aussi le binaire crée lors
du make. La règle re fait l’équivalent d’un make fclean puis un make
• Nous ne ramasserons que votre Makefile et testerons avec nos fichiers. Dans le cadre
de cet exercice, ne gérez que les 5 fonctions obligatoires pour votre lib (ft_putchar,
ft_putstr, ft_strcmp, ft_strlen et ft_swap).

Attention aux wildcards!

******

voila j'espère que ça t'aide à y voir plus claire. et encore désolée pour mon imprécision.

Hors ligne

#6 Le 26/08/2013, à 11:07

tiramiseb

Re : [résolu] Makefile

Ok, tu as un exercice à faire, tu aimerais tricher et avoir de l'aide d'autres personnes pour y répondre, et là tu nous as donné l'intitulé de l'exercice.

Et maintenant, pour entrer dans le vif du sujet : quel est ton problème ?


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#7 Le 26/08/2013, à 11:14

Blur

Re : [résolu] Makefile

Non je ne triche pas car la méthode d'enseignement est l'entraide, on a pas de cours a proprement parlé, on fonctionne sur le concret en testant pour comprendre et en cherchant les réponses la ou elle sont, enfin bref. Sauf que aujourd'hui mon transport à foiré et comme je n'ai pas envie d'avoir du retard j'ai transférée les exos du jour chez moi. voili voilou...

Donc tu n'es pas entrain d'aider une tricheuse ne t’inquiète pas.

bah la enfaîte j'airai bien aimée savoir si mon code était viable et surtout j'aurai aimée comprendre ce que je devait mettre en argument pour fclean et re.

Hors ligne

#8 Le 26/08/2013, à 11:20

tiramiseb

Re : [résolu] Makefile

Ton code m'a l'air pas trop moche.

Pour le "fclean" il doit appeler "clean" (sur la même ligne, après le double-point) et exécuter la commande rm sur le binaire.
Pour le "re", il doit simplement appeler "fclaan" et "all" (car "make" tout court appelle la première règle de la liste).


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#9 Le 26/08/2013, à 11:25

Blur

Re : [résolu] Makefile

je t'avoue que j'ai u n peu de mal avec le "rm sur le binaire" alors si tu pouvais me faire un rapide topo dessus ça serai ultime.

pour le reste merci de m'avoir accordé un peu de ton temps c'est vraiment sympa, je n'ai jamais codée de ma vie et je suis un peu perdue

Hors ligne

#10 Le 26/08/2013, à 11:28

tiramiseb

Re : [résolu] Makefile

je t'avoue que j'ai u n peu de mal avec le "rm sur le binaire" alors si tu pouvais me faire un rapide topo dessus ça serai ultime.

Ben tu fais déjà un rm sur "*.o", ton binaire après compilation (résultat du "make all") est "libcomp", il faut alors faire un rm sur "libcomp" tout simplement.

Par contre, en regardant mieux ton code je vois que tu as un problème dans ton "all" : tu lui demandes de compiler des fichiers ".o" qui eux-mêmes sont déjà des fichiers compilés !? Je pense que le "all" n'est pas bon.

Par contre je n'en connais pas assez pour te dire ce qui serait bon.
Je ne suis pas développeur, ça doit faire une 15aine d'années que j'ai pas fait de code et de Makefile...


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#11 Le 26/08/2013, à 11:30

Blur

Re : [résolu] Makefile

oki merci encore, je vais corriger tout ça ;-) bonne journée .

Hors ligne

#12 Le 26/08/2013, à 12:14

pingouinux

Re : [résolu] Makefile

Bonjour,

tiramiseb #10 a écrit :

tu lui demandes de compiler des fichiers ".o" qui eux-mêmes sont déjà des fichiers compilés

Dans ce cas, gcc se contente de générer l'exécutable avec les fichiers objets qui lui sont fournis.

Blur #5 a écrit :

• Le Makefile ira chercher les fichiers sources dans le dossier srcs.
• Le Makefile ira chercher les fichiers headers dans le dossier includes.

Pour en tenir compte, je te suggère ceci, en regroupant les .o dans une variable

OBJ = ft_putchar.o ft_putstr.o ft_strcmp.o ftstrlen.o ft_swap.o

all: $(OBJ)
 	gcc $(OBJ) -o libcomp

%.o: srcs/%.c
	gcc -I./includes -o $@ -c $<

clean:
	rm -f *.o

fclean:
	make clean
	rm -f libcomp

re:
	make fclean
	make

Remarques :

  • Chaque commande doit être précédée d'une tabulation

  • rm -rf *.o : -r n'est utile que pour des répertoires

Hors ligne

#13 Le 26/08/2013, à 12:17

tiramiseb

Re : [résolu] Makefile

Merci pingouinux pour la correction.
Je me coucherai moins bête ce soir smile


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#14 Le 27/08/2013, à 15:30

Blur

Re : [résolu] Makefile

merci à tous

Hors ligne

Haut de page ↑