Table des matières
Dans l'UE INF203, nous avons besoin d'un environnement UNIX pour travailler, en particulier :
- un interpréteur de commandes compatible avec le Bourne Shell, nous utiliserons
bash
ouzsh
, ainsi qu'un ensemble de commandes de base présentes dans tout UNIX. - un environnement pour éditer, compiler, exécuter et debugger des programmes écrits en C ou en shell, nous utiliserons Visual Studio Code (VSCode).
Ce guide est destiné à vous permettre d'installer tout cela sur votre machine personnelle selon votre système d'exploitation.
1 Vidéos explicatives
En complément des instructions détaillées, les vidéos suivantes montrent le suivi de ces instructions pour certaines configurations :
- Windows 10 : Installation de l'environnement avec WSL (1ère partie) et Installation de l'environnement avec WSL (2ème partie)
- Windows avant 10 : Installation de l'environnement avec SSH
- Commun à tous les systèmes :
2 Quelques problèmes possibles lors de l'installation
Error : 0x80370102 Impossible de démarrer la machine virtuelle parce qu’une fonctionnalité requise n’est pas installée
Cette erreur est documentée par microsoft : https://docs.microsoft.com/fr-fr/windows/wsl/troubleshooting#error-0x80370102-the-virtual-machine-could-not-be-started-because-a-required-feature-is-not-installed. Commencez par vérifier que votre matériel supporte la virtualisation. Ensuite, le plus probable est que la virtualisation est désactivée dans votre BIOS : redémarrez en entrant dans le BIOS et cherchez les réglages permettant de l'activer.
Ecran noir au redémarrage
Cela est probablement un bug connu sur les processeurs ryzen : https://answers.microsoft.com/en-us/windows/forum/all/cant-enablevirtual-machine-platform/9fa54fa1-de34-48be-8973-b82aed178507. Le problème se résout en changeant un réglage dans le BIOS.
Error : 0xc03a001a Impossible d'effectuer l'opération demandée en raison d'une limitation du système de disque virtuel
WSL n'aime pas le système de compression intégré au système de fichiers NTFS, c'est documenté ici : https://github.com/microsoft/WSL/issues/5325. Il suffit de le désactiver dans le répertoire où est stockée votre distribution Linux. Il est aussi possible de le désactiver globalement, mais cela n'est pas indispensable.
3 Windows
3.1 Windows 10
Windows 10 supporte l'installation d'un Linux encapsulé dans une machine virtuelle (VM) et VSCode supporte le développement sur cette machine depuis l'application locale :
- Installer le 'Windows Subsystem for Linux' (WSL) : https://docs.microsoft.com/fr-fr/windows/wsl/install-win10 Vous pouvez choisir la distribution Linux de votre choix. Pour la suite nous vous donnons les instructions pour une Ubuntu, mais vous devriez pouvoir prendre la distribution de votre choix en adaptant les commandes.
- A l'installation d'Ubuntu vous devrez indiquer un nom d'utilisateur et un mot de passe associé. Cet utilisateur sera votre utilisateur pour la VM Ubuntu.
- Avec la VM Ubuntu lancée lors de l'installation (vous pouvez aussi la lancer depuis le menu
Start), vous obtenez une fenêtre dans laquelle un interpréteur de commandes attend vos
commandes. Saisissez les commandes suivantes pour collecter les infos de mises à jour et installer
les outils dont nous nous servirons :
sudo apt update
sudo apt install clang lldb make manpages-dev
l'outil vous informe sur tous les paquetages qui vont être installés, acceptez.les fichiers que vous manipulerez dans la VM Ubuntu sont stockés dans un système de fichiers séparé de celui de windows :
- pour accéder au contenu d'un répertoire de votre VM depuis Windows, exécutez
explorer.exe .
dans le répertoire en question, cela va ourir une fenêtre dans Windows vous permettant de manipuler le contenu de ce répertoire.
- pour accéder aux lecteurs habituels de Windows (
C:
,D:
, etc.) depuis votre VM, rendez vous
dans le répertoire
/mnt
, vous y trouverez un répertoire par lecteur.- pour accéder au contenu d'un répertoire de votre VM depuis Windows, exécutez
- Installer VSCode : https://code.visualstudio.com
- Dans VSCode, installer l'extension Remote - WSL.
- En utilisant le bouton 'Remote' de VSCode, ouvrir un répertoire dans la VM Debian.
- Installer les extensions VSCode suivantes dans WSL (VScode vous donne le choix):
- C/C++
- CodeLLDB
- VPL Client
- Make + lldb configuration
- Une solution avec VirtualBox qui demande une machine suffisamment puissante. Vous pourrez
profiter d'un système GNU/Linux complet s'exécutant dans une machine virtuelle sur votre Windows.
Cela peut s'avérer un peu trop lourd sur une machine très ancienne car une machine virtuelle demande
de la mémoire et un processeur raisonnablement rapide :
- Installer VirtualBox : https://www.virtualbox.org
- Avec VirtualBox, créer une nouvelle machine virtuelle.
- Installer un Linux sur votre machine virtuelle, par exemple : https://ubuntu-fr.org
- Pour plus de confort, vous pouvez installer les
Guest Additions
pour Linux sur votre machine virtuelle, voir https://www.virtualbox.org/manual/ch04.html pour plus de détails. - Se reporter aux instructions pour Linux pour la suite des opérations.
Pour passer votre Ubuntu en français, depuis l'interpréteur de commandes Ubuntu :
sudo apt install language-pack-fr manpages-fr manpages-fr-extra manpages-fr-dev
l'outil vous informe sur tous les paquetages qui vont être installés, acceptez.sudo apt install $(check-language-support)
idem.sudo update-locale LANG=fr_FR.UTF-8 LANGUAGE=fr_FR
Puis fermer l'interpréteur et relancez le.
3.2 Windows <10
Avec les versions de Windows précédant la 10, plusieurs solutions s'offrent à vous :
- La solution la plus simple, si vous disposez d'une connexion internet lorsque vous travaillez,
se connecter sur le serveur Linux de l'université :
- Ce serveur s'appelle Turing (l'un des pionniers de l'informatique), son nom de machine ou hôte
est :
turing.e.ujf-grenoble.fr
Il est possible d'echanger des fichiers avec ce serveur en utilisant le logiciel Winscp : https://winscp.net/eng/download.php
- Au lancement, Winscp s'ouvre sur sa fenêtre de gestion des connections, ajouter un nouveau
site :
- saisir
turing.e.ujf-grenoble.fr
comme nom d'hôte. - saisir votre nom d'utilisateur et mot de passe (ceux d'Agalan, l'annuaire de
l'université).
- sauver ça sous un nom facile à retrouver, Turing par exemple.
- Se connecter à l'hôte que vous venez de configurer (Login).
- Dire oui quand le logiciel vous dit ne pas connaître ce serveur (il ne le connait pas
encore, c'est tout).
- Vous disposez maintenant d'une double fenêtre vous permettant de transférer les fichiers
entre votre machine (à gauche) et le serveur de l'université (à droite).
- Installer VSCode : https://code.visualstudio.com.
- Dans VSCode, installer l'extension Remote - SSH.
En utilisant le bouton 'Remote' de VSCode, choisir
'Open configuration file'
et saisissez les informations de connexion :Host Turing Hostname turing.e.ujf-grenoble.fr User toto
en remplaçant
toto
pas votre nom d'utilisateur. N'oubliez pas de sauver.- En utilisant le bouton 'Remote' de VSCode, choisir
'Connect Current Window to Host...'
, puis Turing, Linux, Continue (demande de confirmation, le serveur n'est pas encore connu) et saisissez votre mot de passe. - Installer les extensions VSCode suivantes dans SSH (VScode vous donne le choix):
- C/C++
- CodeLLDB
- VPL Client
- Ce serveur s'appelle Turing (l'un des pionniers de l'informatique), son nom de machine ou hôte
est :
- Une solution avec Cygwin, si vous n'avez pas d'autre choix. Vous pouvez installer un environnement UNIX presque complet qui s'exécute nativement
sur votre Windows. C'est léger, adapté à une machine peu puissante, mais la configuration et la
manière de travailler seront un peu différentes par rapport aux autres solutions :
- Installer Cygwin : https://cygwin.com
avec les paquets :
clang
,gdb
,make
,man-pages-posix
etchere
- les fichiers que vous manipulerez sous Cygwin sont stockés dans un système de fichiers
séparé de celui de windows :
- vu depuis Windows, Cygwin place ses fichiers ainsi que tout l'environnement UNIX qu'il propose dans
C:\cygwin64\...
ouC:\cygwin\...
selon la version que vous installez (64 bits ou 32). Par la suite, nous utiliserons des chemins pour Cygwin64, adapter ces chemins selon votre installation. - vu depuis l'interpréteur de commandes de Cygwin, les lecteurs habituels de Windows (
C:
,D:
, etc.) sont accessibles à partir de/cygdrive/...
- vu depuis Windows, Cygwin place ses fichiers ainsi que tout l'environnement UNIX qu'il propose dans
- le débugger
lldb
n'est pas compatible avec Cygwin, ce qui va rendre la configuration un peu
différente de ce que nous conseillons pour les autres systèmes.
- les fichiers que vous manipulerez sous Cygwin sont stockés dans un système de fichiers
séparé de celui de windows :
- Installer VSCode : https://code.visualstudio.com et les extensions :
- C/C++
- VPL Client
- Make + lldb configuration
Dans VSCode, dans
File->Preferences->Settings
, dans la partieFeatures->Terminal
:- trouvez
Integrated > Shell : Windows
et éditez le réglage pour y mettre
"c:\\cygwin64\\bin\\bash.exe"
- trouvez
Integrated > Shell Args : Windows
et éditez le réglage pour y mettre
[ "/usr/bin/xhere", "/bin/bash" ]
- trouvez
- Installer Cygwin : https://cygwin.com
4 Linux
GNU/Linux est l'environnement idéal pour travailler l'UE. Dans cette documentation, nous supposons que vous avez installé la distribution Ubuntu ou toute distribution dérivée de la Debian. Si vous êtes débutant, la distribution Ubuntu est généralement considérée comme plus simple à gérer : plus d'interfaces graphiques et moins de commandes textuelles, mais la différence n'est pas énorme.
Commencer par installer les outils que nous utiliserons dans l'UE :
sudo apt update
sudo apt install clang lldb make
Puis installer VSCode : https://code.visualstudio.com/docs/setup/linux, et les extensions :
- C/C++
- CodeLLDB
- VPL Client
- Make + lldb configuration
5 OSX
OSX est un UNIX et est donc tout aussi adapté qu'un Linux pour travailler l'UE. Commencer par installer les outils de la ligne de commande, au choix :
- en allant sur https://developer.apple.com/download/more/?=command%20line%20tools
- en installant XCode et en exécutant
xcode-select --install
dans un terminal.
Installer ensuite VSCode : https://code.visualstudio.com/docs/setup/linux, et les extensions :
- C/C++
- CodeLLDB
- VPL Client
- Make + lldb configuration
6 Travailler durant le semestre
L'environnement installé selon votre système vous donne accès à tout ce dont vous avez besoin pour travailler dans l'UE. En particulier tout peut se faire depuis VSCode.
6.1 Commandes Unix et programmation en shell
Dans VSCode, avec Terminal->New Terminal
, vous pouvez ouvrir une sous fenêtre dans laquelle
s'exécute un interpréteur de commandes. Cet interpréteur vous permet de saisir des commandes Unix ou
de programmer en shell. Vous pouvez aussi editer vos scripts dans VSCode et les exécuter grâce au
terminal. Attention, lors de l'édition de scripts sous Windows, penser à régler le caractère de fin
de ligne sur LF
et pas CRLF
(réglage accessible dans la barre de status bleue en bas de la
fenêtre de VSCode).
6.2 Programmation en C
Dans VSCode, vous pouvez éditer vos fichiers source en C. Vous pouvez les compiler et les exécuter
en utilisant le terminal, comme nous apprendrons à le faire dans l'UE. Vous pouvez également écrire
deux fichiers de configuration, launch.json
et tasks.json
dans le répertoire .vscode
de votre
répertoire de travail, indiquant à VSCode comment il peut compiler et exécuter vos
programmes en C. L'extension C/C++ de VSCode est capable de générer ces fichiers de configuration
pour vous, mais leur contenu sera alors légèrement différent de celui dont nous avons besoin pour
l'UE.
Le contenu de ces deux fichiers de configuration dépend de votre installation. Les configurations
qui suivent vous permettent de compiler un programme et de l'exécuter en selectionnant dans
l'éditeur le fichier contenant la fonction main
.
6.2.1 Sous Cygwin
Sous Cygwin, les entrées/sorties du programme (textes lus/écrits par le programme) se font dans une
fenêtre séparée qui s'ouvre lors de l'exécution. Ceci est dû à l'absence de lldb
dans cet
environnement. De plus, cette fenêtre se ferme toute seule à la fin de l'exécution : si votre
programme ne fait que des affichages, vous ne les verrez pas. La solution est, au choix, de :
- mettre systématiquement un point d'arrêt à la fin du programme.
- terminer le
main
par un appel àgetchar()
(par exemple).
Les fichiers de configuration pour Cygwin sont :
launch.json
{ "configurations": [ { "name": "Run and debug C Program", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "c:\\cygwin64\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "Make" } ] }
tasks.json
{ "tasks": [ { "type": "process", "label": "Make", "command": "C:\\cygwin64\\bin\\bash.exe", "args": [ "--login", "-c", "cd '${fileDirname}' && CC=clang CFLAGS='-g -Wall' make ${fileBasenameNoExtension}" ], "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, } ] }
6.2.2 Sous toute autre configuration
Les entrées/sorties du programme (textes lus/écrits par le programme) se font dans le terminal
intégré de VSCode. Les fichiers launch.json
et tasks.json
peuvent être générés par l'extension
'Make + lldb configuration' en choisissant 'Make & lldb' lors de l'utilisation de 'Run and debug' ou
'create à launch.json file'.
launch.json
{ "configurations": [ { "name": "Run and debug C Program", "type": "lldb", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "cwd": "${fileDirname}", "preLaunchTask": "Make" } ] }
tasks.json
{ "tasks": [ { "type": "process", "label": "Make", "command": "/usr/bin/env", "args": [ "CC=clang", "CFLAGS=-g -Wall", "make", "${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "group": { "kind": "build", "isDefault": true }, } ] }
7 Travailler à plusieurs
VSCode supporte la collaboration à distance dans un même espace de travail. Grâce à l'extension
'Live Share'
, vous pouvez éditer à plusieurs le même ensemble de fichiers, travailler à plusieurs
dans le même terminal, avoir un canal de discussion intégré à VSCode, etc. Une fois installée, vous
ouvez utiliser 'Live Share'
en vous rendant dans la nouvelle vue qui devient disponible, vous avez
alors deux choix :
- Partager : dans ce cas vous hébergez une session et tout le monde travaille sur vos fichiers. Il
ne peut y avoir qu'un seul participant hébergeant la session. Losrqu'une session est démarrée, un
lien de partage que vous pouvez diffuser aux autre participants et automatiquement copié dans
votre
'ClipBoard'
. Un nouveau bouton dans la barre d'état (tout en bas) vous permet de copier à nouveau le lien de partage en cas de besoin. - Rejoindre : dans ce cas vous utilisez un lien de partage diffusé par l'hébergeur pour rejoindre sa session.
ATTENTION : dans les deux cas, le système ne semble bien fonctionner que si vous vous authentifiez à l'aide d'un compte microsoft ou github, il faudra donc vous en créer un.
Une fois dans une session partagée, la vue 'Live Share'
vous permet de voir :
- les participants (vous pouvez cliquer sur la pastille de couleur pour que leur nom apparaisse ou non dans l'éditeur)
- les éléments partagé de la session :
- terminaux
- canal de discussion
- canal de discussion audio (en installant
'Live Share Audio'
)
Et l'explorateur ainsi que l'éditeur vous permettent de travailler tous ensemble sur les fichiers de l'hébergeur.