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épertoire ex00/. Ce script doit compiler les fichiers .c en fichiers objets .o et ensuite créer la bibliothèque libft.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ée libft.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, et re.

💻 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 dossier includes/.
    •  

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).
    •  

📋 Les exercices de C09 :

Les projets C de la piscine 42 :

Retour en haut