Annexe C — Compilation et outils de build
Étapes de compilation
Source (.c) → Préprocesseur → Assembleur → Objet (.o) → Éditeur de liens → Exécutable
# Compilation complète en une commande
gcc main.c -o programme
# Étapes séparées
gcc -E main.c -o main.i # Préprocesseur
gcc -S main.i -o main.s # Compilateur → assembleur
gcc -c main.s -o main.o # Assembleur → objet
gcc main.o -o programme # Éditeur de liens
Options GCC importantes
| Option |
Description |
-o <fichier> |
Nom de l'exécutable |
-c |
Compiler sans édition de liens |
-I<répertoire> |
Ajouter un répertoire d'includes |
-L<répertoire> |
Ajouter un répertoire de bibliothèques |
-l<biblio> |
Lier avec une bibliothèque (ex: -lm pour math) |
-O2 / -O3 |
Optimisations |
-std=c11 |
Standard C à utiliser |
-pedantic |
Respecter strictement le standard |
Makefile — Automatiser la compilation
CC = gcc
CFLAGS = -Wall -Wextra -std=c11
TARGET = programme
SRCS = main.c utils.c
OBJS = $(SRCS:.c=.o)
$(TARGET): $(OBJS)
$(CC) $(OBJS) -o $(TARGET)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJS) $(TARGET)
.PHONY: clean
make # Compiler
make clean # Nettoyer
CMake — Build system moderne
cmake_minimum_required(VERSION 3.10)
project(MonProjet C)
set(CMAKE_C_STANDARD 11)
add_compile_options(-Wall -Wextra)
add_executable(programme main.c utils.c)
target_link_libraries(programme m) # Lier avec libm
mkdir build && cd build
cmake ..
make
Bibliothèques standard C
| Header |
Fonctions clés |
<stdio.h> |
printf, scanf, fopen, fclose |
<stdlib.h> |
malloc, free, exit, atoi, rand |
<string.h> |
strlen, strcpy, strcmp, memcpy |
<math.h> |
sqrt, pow, sin, cos (lier avec -lm) |
<time.h> |
time, clock, difftime |
<assert.h> |
assert |