Piscine 42 C09 : les exercices corrigés
Le projet C09 explore l’automatisation du processus de compilation avec Makefile, et la création de bibliothèques statiques en C. Tu vas apprendras à structurer tes projets de manière efficace, à utiliser des scripts de compilation, et à créer des bibliothèques réutilisables.
Découvres ci-dessous les solutions détaillées et commentées pour le projet C09 de la Piscine de l’école 42.
C09 ex00 : libft
🎯 Objectif de libft
L’objectif de cet exercice est de créer une bibliothèque C personnalisée appelée libft.a
. Cette bibliothèque contiendra une collection de fonctions utilitaires de base que vous avez déjà créées lors des exercices précédents. Vous devrez également écrire un script shell qui compile ces fonctions en une bibliothèque statique.
🎓 Notions essententielles
- Bibliothèque statique en C : Comprendre comment créer et utiliser une bibliothèque statique en C. Une bibliothèque statique est un ensemble de fichiers objets compilés regroupés dans un seul fichier
.a
qui peut être lié statiquement à un programme. - Script shell : Utiliser un script shell (
.sh
) pour automatiser la compilation et la création de la bibliothèque. - Compilation en C : Savoir utiliser
gcc
pour compiler les fichiers.c
en fichiers objets.o
, puis regrouper ces fichiers objets dans une bibliothèque.
💻 Fonctionnement de libft
Création des fichiers sources :
- Vous devez créer les fichiers
.c
suivants, contenant les fonctions respectives :ft_putchar.c
ft_swap.c
ft_putstr.c
ft_strlen.c
ft_strcmp.c
Script shell (libft_creator.sh
) :
- Créez un script shell nommé
libft_creator.sh
dans le répertoireex00/
. Ce script doit compiler les fichiers.c
en fichiers objets.o
et ensuite créer la bibliothèquelibft.a
.
✅ Le code de libft_creator.sh :
#!/bin/sh
gcc -Wall -Wextra -Werror -c ft_putchar.c ft_swap.c ft_putstr.c ft_strlen.c ft_strcmp.c
ar rc libft.a ft_putchar.o ft_swap.o ft_putstr.o ft_strlen.o ft_strcmp.o
ranlib libft.a
rm -f *.o
gcc -Wall -Wextra -Werror -c ...
: Compile chaque fichier.c
en un fichier objet.o
sans lier.ar rc libft.a ...
: Crée une bibliothèque statique nomméelibft.a
à partir des fichiers objets.ranlib libft.a
: Indexe la bibliothèque pour permettre un accès rapide aux symboles.rm -f *.o
: Supprime les fichiers objets après avoir créé la bibliothèque pour garder le répertoire propre.
C09 ex01 : Makefile
🎯 Objectif de Makefile
L’objectif de cet exercice est d’écrire un Makefile
qui compile une bibliothèque statique libft.a
. Le Makefile
doit inclure les règles nécessaires pour compiler les fichiers source, créer la bibliothèque, et gérer les fichiers temporaires générés durant la compilation.
🎓 Notions essententielles
- Makefile en C : Un
Makefile
est un script utilisé pour automatiser le processus de compilation en définissant des règles pour compiler les fichiers sources en fichiers objets, puis pour les lier ensemble. - Compilation conditionnelle : Utiliser des règles pour compiler uniquement les fichiers qui ont été modifiés.
- Règles Makefile : Comprendre et utiliser les règles
all
,clean
,fclean
, etre
.
💻 Fonctionnement du Makefile
Structure du Makefile :
Le Makefile
doit être capable de :
- Compiler les fichiers
.c
en fichiers objets.o
. - Créer la bibliothèque statique
libft.a
. - Nettoyer les fichiers temporaires.
- Les fichiers source se trouvent dans le dossier
srcs/
et les fichiers d’en-tête dans le dossierincludes/
.
Contenu du Makefile :
Le Makefile
doit inclure les règles suivantes :
- all : Compile la bibliothèque en utilisant les fichiers source.
- clean : Supprime les fichiers objets générés pendant la compilation.
- fclean : Supprime les fichiers objets et la bibliothèque compilée (
libft.a
).