.. _exo_consignes: Consignes ========= Pour la 1ère séance ------------------- Les commandes suivantes créent le répertoire de travail et installent les extensions VSCode : .. code-block:: bash # 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/ mkdir p1 wget https://members.loria.fr/cyril.grelier/r3_05/files/p1e1.c -P p1/ code . Une fois dans VSCode, ouvrez le fichier ``p1/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 avec un dossier par partie : .. code-block:: text 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 ------------------- .. code-block:: bash # Compilation (avec p1e1.c placé dans le dossier p1): gcc -std=c2x -Wall -Wextra -pedantic -g p1/p1e1.c # -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é # il existe une option "-o nom_prog" qui permet de donner un nom au programme compilé # sans le -o nom_prog, le nom du programme est a.out # Exécution : ./a.out # Exécution avec valgrind pour détecter des bugs mémoire : valgrind ./a.out # Exécution avec valgrind avec plus d'info valgrind --leak-check=full --track-origins=yes -s ./a.out Si vous utilisez votre machine perso ------------------------------------ Sous Unix-like ############## Paquets à installer : - Debian/Ubuntu : .. code-block:: bash sudo apt update sudo apt install build-essential gdb valgrind clang-format make - Fedora : .. code-block:: bash sudo dnf groupinstall "Development Tools" sudo dnf install gdb valgrind clang-tools-extra make - Arch : .. code-block:: bash 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, ``valgrind`` fonctionnera peut-être moins bien que sous Linux .. code-block:: bash brew 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.