Consignes¶
Pour la 1ère séance¶
Créez le répertoire de travail et installez les extensions VSCode :
# installation des extensions pour le C et clang-format
code --install-extension ms-vscode.cpptools-extension-pack
code --install-extension xaver.clang-format
mkdir r3_05_programmation_systeme
cd r3_05_programmation_systeme
# clang-format indentera automatiquement votre code
wget https://members.loria.fr/cyril.grelier/r3_05/files/.clang-format
mkdir .vscode
# fichier de settings pour vscode
wget https://members.loria.fr/cyril.grelier/r3_05/files/settings.json -P .vscode/
wget https://members.loria.fr/cyril.grelier/r3_05/files/p1e1.c
code .
Une fois dans VSCode, ouvrez le fichier p1e1.c et faites le raccourci Ctrl+Shift+i (ou Ctrl+Shift+p puis écrivez format document), dans la fenêtre qui s’ouvre, choisissez l’option pour configurer un formateur puis choisissez clang-format. Maintenant, quand vous enregistrez le fichier, l’indentation sera corrigée automatiquement.
Structure du dossier (tous les fichiers dans le même dossier) :
r3_05_programmation_systeme/ <- VSCode doit être ouvert depuis ce dossier
├── .vscode/
│ └── settings.json
├── .clang-format
├── p1e1.c
├── p1e2.c
├── ...
├── p2e1.md
├── p2e2.md
└── p2e3.c
Ou (un dossier par partie) :
r3_05_programmation_systeme/ <- VSCode doit être ouvert depuis ce dossier
├── .vscode/
│ └── settings.json
├── p1/
│ ├── p1e1.c
│ ├── p1e2.c
│ └── ...
├── p2/
│ ├── p2e1.md
│ ├── p2e2.md
│ ├── p2e3.c
│ └── ...
└── .clang-format
Le nom des fichiers C sont p[numero de la partie]e[numero de l'exo].c -> p1e2.c pour l’exo 2 de la partie 1.
Vous pouvez aussi créer des fichiers Markdown p[numero de la partie]e[numero de l'exo].md pour les commandes à lancer et notes (pour la 2ème partie entre autres).
Pour la compilation¶
# Compilation :
gcc -std=c2x -Wall -Wextra -pedantic -g p1e1.c -o p1e1
# si p1e1.c est dans un dossier p1
gcc -std=c2x -Wall -Wextra -pedantic -g p1/p1e1.c -o p1e1
# -std=c2x : utilise la norme du C23
# -Wall -Wextra -pedantic : ajoute des avertissements pour détecter plus d'erreurs
# -g : Ajoute les infos de debug dans le programme compilé
# -o nom_prog : nom du programme compilé
# sans le -o nom_prog, le nom du programme est a.out
# Exécution :
./p1e1
# ou si vous n'avez pas utilisé l'option -o
./a.out
# Exécution avec valgrind pour détecter des bugs mémoire :
valgrind ./p1e1
valgrind ./a.out
# Exécution avec valgrind avec plus d'info
valgrind --leak-check=full --track-origins=yes -s ./p1e1
valgrind --leak-check=full --track-origins=yes -s ./a.out
Si vous utilisez votre machine perso¶
Sous Unix-like¶
Paquets à installer :
Debian/Ubuntu :
sudo apt update sudo apt install build-essential gdb valgrind clang-format make
Fedora :
sudo dnf groupinstall "Development Tools" sudo dnf install gdb valgrind clang-tools-extra make
Arch :
sudo pacman -S base-devel gdb valgrind clang make
macOS (avec Homebrew), je n’ai pas testé sous mac mais normalement tous les TP devraient fonctionner,
valgrindfonctionnera peut-être moins bien que sous Linuxbrew install gcc gdb valgrind clang-format make
Sous Windows¶
C’est un cours de programmation système sous Unix, je n’ai pas testé mais à priori tous les TP ne fonctionnent pas sous Windows (pour les parties processus et threads surtout).
Vous pouvez au choix :
installer un dual boot avec un linux
passer par WSL
utiliser un docker
utiliser une machine virtuelle
Dans les 4 cas, faites le avant de venir en cours sinon utilisez les pc des salles.