Premiers pas

Ce cours d’apprentissage du langage C nécessite un environnement (machine physique, machine virtuelle ou container) équipé avec :

  1. un système d’exploitation Linux (Ubuntu ou équivalent) ;

  2. le compilateur gcc ;

  3. 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.

../_images/01-platforms.drawio.png

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.

../_images/wsl2.svg

A faire…

Suivre toutes les étapes de ce tutorial pour installer WSL2/Ubuntu sur une machine Windows :

  • Install WSL ;

  • Install Ubuntu WSL ;

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

../_images/ubuntu.png

Le terminal est un vrai terminal Linux qui permet d’installer des paquets, de compiler des programmes, etc…


../_images/terminal-ubuntu.png

Le système de fichiers Linux est accessible depuis Windows.


../_images/filesystem.png

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.

../_images/01-working-with-codespace.png

Source : https://4geeks.com/lesson/what-is-github-codespaces

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.

../_images/01-start-coding-with-codespace.png

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 :

  1. depuis un terminal WSL2/Ubuntu, le système de fichiers Windows est référencé par /mnt/c/Users/YOUR_WINDOWS_USERNAME/

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