[Débutant] problème pendant la compilation d'un programme
Fermémamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 - 16 juin 2023 à 14:56
- [Débutant] problème pendant la compilation d'un programme
- Logiciel de programmation pour débutant - Guide
- Programme demarrage windows 10 - Guide
- Forcer la fermeture d'un programme - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
5 réponses
Tout cela se passe comme si tu n'avais pas tapé le g++
avant le -std=
C'est un message de cmd, pas de g++
Essaies de taper dir /b au niveau de ton dossier C:\C++ pour voir si ton fichier main.cpp est bien là.
Puisque tu es là, tu peux essayer de taper where g++
pour voir si le compilateur est bien accessible à cet endroit.
Je ne te conseille pas de suivre un tutoriel sur YouTube, sauf si tu aimes vraiment faire des pause et reculer souvent ...
Voici un trèes bon tutoriel gratuit en ligne.
https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/
Personnellement, je n'utilise pas Visual Studio Code ni aucun autre IDE (Integrated Development Environment)
Je travaille directement avec cmd et l'éditeur notepad.
Tu pourrais aussi installer notepad++ qui offre la coloration syntaxique.
D'abord, c'est surprenant que g++ se trouve dans ton dossier C:\C++. C'est suffisant qu'il soit dans Program Files (le where le confirme)
Le where est une commande qui cherche dans les dossiers du %path% si le programme mentionné existe.
Le dir /b liste les fichier et/ou les sous-dossiers se trouvant dans le dossier courant.
Tu as un fichier prog.exe dans ce dossier. Tu pourrais taper simplement prog et le programme devrait s'exécuter.
Cette extension (.exe) n'a pas besoin d'être mentionnée.
Bonjour, merci pour votre réponse PierrotLeFou !
Essaies de taper dir /b au niveau de ton dossier C:\C++ pour voir si ton fichier main.cpp est bien là.
voilà ce que ça me donne :
C:\C++> dir /b
g++
main.cpp
prog.exe
Puisque tu es là, tu peux essayer de taper where g++
voilà ce que ça me donne :
C:\C++> where g++
C:\C++\g++
C:\Program Files\mingw64\bin\g++.exe
Je ne te conseille pas de suivre un tutoriel sur YouTube, sauf si tu aimes vraiment faire des pause et reculer souvent ...
Voici un trèes bon tutoriel gratuit en ligne.
https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/
D'accord, je prends note du conseil ! Et merci pour le lien du tutoriel !
Personnellement, je n'utilise pas Visual Studio Code ni aucun autre IDE (Integrated Development Environment)
Je travaille directement avec cmd et l'éditeur notepad.
Tu pourrais aussi installer notepad++ qui offre la coloration syntaxique.
Je vois que ce n'est une nécessité mais toutes les vidéos/tutos que j'ai vu/lu préconisent d'en installer un, pour l'instant je vais faire avec. J'ai déjà essayer Notepad++ mais son interface ne me plaît pas trop.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question16 juin 2023 à 14:56
Bonjour Noomolas01,
Quel que soit ton système d'exploitation (Windows, Linux), une commande est :
- soit une built-in (par exemple cd)
- soit un programme (c'est le cas de gcc ou g++)
Quand tu tapes une commandes, ton shell (ton terminal) va chercher si on est dans l'un ou l'autre cas de figure. Quand il s'agit d'un programme,
- soit on passe son chemin absolu (par exemple C:\Program Files\mingw64\bin\g++.exe)
- soit plus simplement juste son nom (g++.exe qui sous windows peut s'abréger g++).
- ... mais dans ce cas, il faut que le dossier (ici C:\Program Files\mingw64\bin) qui héberge la commande (ici g++) soit référencé dans la variable d'environnement adéquate pour que ton shell puisse la trouvé : c'est le fameux PATH.
- sous windows, le path est noté %PATH% (ou %path%), sous Linux $PATH.
Ensuite, que fait ton shell ? Quand tu tapes la commande g++ (suivie ou non de paramètres), ton shell regarde si c'est une built-in. Ce n'est pas le cas ici, donc il itère sur chaque dossier listé dans ton PATH. Pour afficher sa valeur :
- sous windows :
echo %PATH%
- sous Linux :
echo $PATH
Dès que ton shell trouve un dossier contenant une commande g++, il s'arrête : l'exécutable à lancer est déterminé, et donc il n'y a plus de raison de chercher dans les autres dossiers. Cela signifie que si l'exécutable g++ est dans plusieurs dossiers de ton PATH, c'est celui qui est dans le dossier le plus au début de ton PATH qui est utilisé. Si on voulait utiliser une autre occurrence, on serait donc contraint(e) d'utiliser son chemin absolu.
Si la commande n'est trouvée dans aucun dossier listé dans ton PATH, alors la résolution échoue et ton shell te dit que la commande est introuvable. C'est sur cette base que le message #2 de Pierrot a été écrit : si tu oublies de taper "g++" en début de commande, alors le premier est mot de ta commande est "-std" et c'est donc celui que ton shell va tenter de résoudre.
La commande where (dont tu parles dans le message #3, et dont l'équivalent est whereis sous Linux) cherche parmi les dossiers de ton PATH la commande recherchée. Si elle n'est pas capable de résoudre ta commande, c'est probablement que le programme n'est pas installé, du moins pas dans un dossier référencé dans ton PATH.
Pour finir, il est parfaitement possible de modifier sa variable d'environnement PATH. Sous Linux la question se pose rarement car tous les exécutables sont supposés être installés dans trois dossiers bien définis par la FHS. Sous windows, chaque application vit dans son propre dossier, et donc à chaque fois il faut s'assurer que le dossier dans lequel elle est effectivement installé est référencer dans ton PATH.
Je ne comprends pas trop comment, mais maintenant cela fonctionne, est-ce grâce aux commandes que vous m'avez indiqué ? Si oui, pouvez m'expliquer leurs fonctions ?
Les commandes where ou dir ne modifient pas ta configuration, elles permettent juste de diagnostiquer. Il est probable qu'entre le moment où tu as soulevé le problème et le moment où il s'est résolu, tu as relancé ton shell et du coup PATH était correctement initialisé.
Une autre explication possible est peut être le dossier courant dans lequel tu te trouves. Sous windows il me semble que le dossier courant est implicitement dans ton PATH. Donc si tu lances la commande g++ depuis le dossier qui la contient, alors elle peut être résolue par ton shell.
Bonne chance