763 | | **Objectifs** |
| 763 | **Objectifs de l'étape** |
| 764 | |
| 765 | |
| 766 | L'application utilisateur n'est pas censée utiliser directement les appels système. Elle utilise une bibliothèque (ou librade fonctions standards (la libc POSIX, mais pas seulement) et ce sont ces fonctions qui réalisent les appels système. Toutes les fonctions de la libc n'utilisent pas les appels système. Par exemple, les fonctions `int rand(void)` ou `int strlen(char *)` (rendent, respectivement, un nombre pseudo-aléatoire et la longueur d'une chaîne de caractères) n'ont pas besoin du noyau. |
| 767 | |
| 768 | Normalement, les bibliothèques système sont des « vraies » bibliothèque au sens `gcc` du terme. C'est-à-dire des archives de fichiers objet (`.o`). Ici, nous allons simplifier et ne pas créer de bibliothèque, mais seulement un fichier objet `libc.o` contenant toutes les fonctions. Ce fichier objets doit être lié avec le code de l'application. |
| 769 | |
| 770 | L'exécutable de l'application utilisateur est donc composé de deux parties : le code de l'application et le code de la librairie |