Premiers pas
Ce cours d’apprentissage du langage C nécessite un environnement (machine physique, machine virtuelle ou container) équipé avec :
un système d’exploitation Linux (Ubuntu ou équivalent) ;
le compilateur gcc ;
et l’environnement de développement VS Code.
La figure ci dessous illustre les installations à réaliser pour 4 architectures (machines) différentes :
un PC Windows ;
un PC Linux ;
un MacBook ;
un environnement GitHub codespace.
A partir des paragraphes ci dessous, installer les éléments nécessaires en fonction de votre environnement de travail. Si vous choisissez de travailler dans un environnement GitHub, vous pouvez passer directement à 4. Travailler dans un codespace GitHub.
1. WSL2, Linux sur une machine Windows
Sur une machine Windows, il faut installer WSL2, une architecture permettant de faire tourner un vrai noyau Linux. Cette solution est plus légère qu’une machine virtuelle VirtualBox ou VMware.
A faire…
Suivre toutes les étapes de ce tutorial pour installer WSL2/Ubuntu sur une machine Windows :
Configure Ubuntu. Il est efficace de choisir le même username/password que celui de votre compte ESIEE. Lorsque vous rentrez un mot de passe, le terminal n’affiche rien. C’est normal. Il faut taper le mot de passe normalement et valider avec la touche
Entrée
.
A l’issue de l’installation, la distribution Ubuntu apparait comme une application Windows dans le menu démarrer. Il suffira de lancer cette application pour démarrer un terminal Ubuntu.
Le terminal est un vrai terminal Linux qui permet d’installer des paquets, de compiler des programmes, etc…
Le système de fichiers Linux est accessible depuis Windows.
Réciproquement, le système de fichier Windows, est accessible depuis le terminal Ubuntu. Par exemple, le répertoire Windows C:\Users\user
est accessible via le répertoire Ubuntu /mnt/c/Users/user
.
L’étape suivante consiste à installer le compilateur gcc.
2. Le compilateur gcc
Cette étape nécessite un environnement Linux :
Windows WSL2/Ubuntu ;
ou un environnement Linux natif.
Avertissement
Dans l’environnement MacOS, il faut installer XCode.
Dans un terminal, lancer la commande gcc --version.
Si le terminal affiche l’information demandée, le compilateur gcc
est déjà installé.
Si le terminal affiche une erreur, il faut installer gcc
avec:
$ sudo apt update
$ sudo apt install build-essential
A l’issue de cette opération, la commande gcc --version doit fonctionner:
$ gcc --version
gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
3. VS Code
S’il n’est pas déjà installé, l’étape suivante consiste à installer l’environnement de développement VS Code.
La procédure d’installation est décrite ci dessous en fonction du système d’exploitation natif :
On installera a minima l’extension C/C++ qui fournit une aide très utile (coloration syntaxique, auto complétion, formatage du code, etc…)
4. Travailler dans un codespace GitHub
Le codespace GitHub est un container associé à un repo, fournissant un environnement VS Code et un terminal Ubuntu dans le cloud. Comme le montre la figure de début de chapitre, il est totalement configuré par défaut et aucune installation additionnelle n’est nécessaire. Pour plus de détails, consulter la page Vue d’ensemble de GitHub Codespaces.
La figure ci dessous illustre la différence entre le travail sur une machine locale et le travail avec un codespace.
Se connecter sur GitHub.
Créer un nouveau repo en renseignant uniquement le champ Repository name
. Vous pouvez le nommer igi3008-c
. Il est disponible à l’adresse https://github.com/YOUR_GITHUB_NAME/igi3008-c
.
Lui associer un codespace avec Create a codespace
.
Vous vous retrouvez dans un environnement de travail VS Code (navigateur de fichiers, éditeur de texte, terminal Linux, etc…) dont l’adresse est du type https://CODESPACENAME.github.dev
.
Pour synchroniser votre codespace et votre repo, dans le terminal
$ git add .
$ git commit -m "un message explicatif"
$ git push
Astuce
Les codespaces sont gérés par la page https://github.com/codespaces. C’est ici qu’il est possible de les arrêter, de les supprimer, de les cloner, etc… Il est conseillé de les arrêter lorsqu’ils ne sont pas utilisés pour économiser des ressources.
5. Un premier programme
Pour vérifier que l’environnement de travail est opérationnel, on va dérouler le processus de création/compilation/exécution d’un programme minimal et vérifier son bon fonctionnement.
Astuce
Dans un environnement Windows WSL2/Ubuntu il co-existe deux systèmes de fichiers. Celui de l’OS natif (Windows) et celui de WSL2/Ubuntu :
depuis un terminal WSL2/Ubuntu, le système de fichiers Windows est référencé par
/mnt/c/Users/YOUR_WINDOWS_USERNAME/
depuis Windows, le système de fichiers WSL2/Ubuntu est référencé par
\\wsl.localhost\Ubuntu-20.04\home\YOUR_UBUNTU_USERNAME
. Il est visible dans le navigateur de fichiers.
Il est conseillé de créer/modifier les fichiers dans Windows. Il est obligatoire de compiler/exécuter depuis le terminal WSL2/Ubuntu en utilisant le chemin d’accès décrit dans la première option ci dessus.
Ecrire le code source
Quelque soit l’architecture retenue, ouvrir Visual Studio Code. Si vous n’êtes pas dans un codespace, se placer dans le répertoire de travail avec File > Open Folder.... Dans un codespace, le répertoire de travail est déjà ouvert. Il faudra régulièrement le synchroniser avec le repo correspondant.
Créer un nouveau fichier hello.c
et y copier/coller le programme ci dessous:
1#include <stdio.h>
2
3int main(){
4 printf("Hello World !\n");
5 return 0;
6}
Compiler
Dans le terminal, créer un programme exécutable hello
avec la commande:
$ gcc -std=c99 -Wall -Wextra hello.c -o hello
Les options de compilation -std
, -Wall
, -Wextra
seront abordées ultérieurement.
La compilation doit se dérouler sans erreur et un fichier hello
doit se trouver dans le répertoire avec le fichier source hello.c
:
$ ls
$ hello hello.c
Exécuter
Lancer le fichier exécutable. La chaine de caractères Hello World !
doit s’afficher:
$ ./hello
Hello World !
Synchroniser
Si vous travaillez avec les codespaces GitHub, pour assurer la persistence des données (votre code), il faut régulièrement synchroniser le codespace avec le repo. Dans le terminal:
$ git add .
$ git commit -m "un message explicatif"
$ git push
Vérifier que le repo https://github.com/YOUR_GITHUB_NAME/igi3008-c
reflète fidèlement le contenu du codespace.
Important
Les étapes ci dessus seront à reproduire chaque fois qu’il y aura du code à écrire :
écrire le code source ;
compiler ;
exécuter ;
synchroniser (GitHub codespace).