L'option -o sert à donner le nom du fichier produit ; facile à retenir ⇒ o comme output. Donc soit tu ne spécifies pas l'option -o et le fichier produit se nommera a.out ; soit tu utilises l'option -o pour donner un nom ⇒ gcc -o mon_executable main.c et ton exécutable se nommera mon_executable.
Mais le gros point à retenir ici est qu'avant de venir poser une question sur un forum il faut impérativement chercher un peu par soi-même et surtout, surtout, surtout, LIRE LA DOC.
Et sous macOS c'est LLVM qui est utilisé, gcc est juste un alias. Pense à changer ton habitude.
Humm, sous macOS en C on ne peut pas exécuter un fichier dans la console ?
White Crow a écrit:
Bonjour, lire la doc ?
L'option -o sert à donner le nom du fichier produit ; facile à retenir ⇒ o comme output. Donc soit tu ne spécifies pas l'option -o et le fichier produit se nommera a.out ; soit tu utilises l'option -o pour donner un nom ⇒ gcc -o mon_executable main.c et ton exécutable se nommera mon_executable.
Mais le gros point à retenir ici est qu'avant de venir poser une question sur un forum il faut impérativement chercher un peu par soi-même et surtout, surtout, surtout, LIRE LA DOC.
Merci du conseil, ce screen est-il suffisant pour demander un petit coup de main ?
- Edité par Pierre-AntoineDumond2 10 juin 2022 à 16:30:51
Clairement tu fais un peu n'importe quoi en imaginant qu'au bout d'un moment ça marchera par hasard. Reprenons dans l'ordre
$ vim main.c
Ok, ça, ça démarre l'éditeur de textes vim pour taper/modifier/corriger le fichier source
gcc -o main.o -c main.c
Ca demande de fabriquer main.o (-o comme output) à partir de la compilation séparée (option -c) du source main.c.
C'est pas faux, mais comme tu mets l'option -c, ça fabrique seulement un "fichier objet" qui n'est pas exécutable. Un exécutable c'est produit (par le le linker) à partir de fichiers objets, et de bibliothèques d''exécution (dont la bibliothèque standard C qui correspond à stdio.h et compagnie.)
Là où ça ne va plus du tout
$ ./main.c # NON
non, là tu dis à l'interpréteur de commandes (le shell zsh qui tourne dans ta console) que tu veux faire exécuter le fichier main.c qui est dans le répertoire courant. Le fichier main.c n'est pas exécutable. Pour cela il faudrait que le bit x soit à 1 dans ses permissions (c'est pour ça que tu as le message "permission denied"), et que le chargeur (loader) le reconnaisse (ça devient technique), soit parce qu'il a un magic number qui va bien, soit parce qu'il reconnait que c'est un script.
Tu aurais fait ./main.o, ça ne marcherait pas non plus. Main.o est un fichier objet, et un fichier objet n'est pas exécutable.
A partir de là, tu as deux solutions.
1. soit tu persistes dans l'idée de commencer par une compilation séparée. Alors il faut continuer en faisant une édition des liens pour fabriquer l'exécutable, et le faire exécuter sans doute. Ce qui donne la séquence de commandes
vim main.c # edition de textes
gcc -o main.o -c main.c # compilation séparée
gcc -o main main.o # production de l'exécutable
./main # exécution de l'exécutable
2. soit tu produis directement l'exécutable (sans option -c)
vim main.c # edition de textes
gcc -o main main.c # compilation et production de l'exécutable
./main # exécution de l'exécutable
ce qui est quand même plus simple.
PS: le problème des pages de manuel, c'est que ce sont des documents de référence sur les options des commandes, mais que ce ne sont absolument pas des tutoriels commençant par expliquer simplement les notions de base, avec des exemples bien expliqués, et donc c'est assez peu utilisable par des débutants. Autrefois on en trouvait dans les docs système unix, à côté des pages de manuel.
L'option -o sert à donner le nom du fichier produit ; facile à retenir ⇒ o comme output. Donc soit tu ne spécifies pas l'option -o et le fichier produit se nommera a.out ; soit tu utilises l'option -o pour donner un nom ⇒ gcc -o mon_executable main.c et ton exécutable se nommera mon_executable.
Mais le gros point à retenir ici est qu'avant de venir poser une question sur un forum il faut impérativement chercher un peu par soi-même et surtout, surtout, surtout, LIRE LA DOC.
Merci du conseil, ce screen est-il suffisant pour demander un petit coup de main ?
[...]
- Edité par Pierre-AntoineDumond2 il y a environ 4 heures
en plus de lire la doc, lire les réponses aide aussi :
White Crow a écrit:
[...]
L'option -o sert à donner le nom du fichier produit ; facile à retenir ⇒ o comme output. Donc soit tu ne spécifies pas l'option -o et le fichier produit se nommera a.out ; soit tu utilises l'option -o pour donner un nom ⇒ gcc -o mon_executable main.c et ton exécutable se nommera mon_executable.
Merci la doc, et c'est clang sous mac. gcc est un alias mais par habitude utiliser clang pour ne pas se fier à des options spécifiques à gcc.
- Edité par markand 12 juin 2022 à 9:12:11
git is great because Linus did it, mercurial is better because he didn't.
Problème d'exécution avec gcc sous Mac OS Catalina
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
git is great because Linus did it, mercurial is better because he didn't.
git is great because Linus did it, mercurial is better because he didn't.
git is great because Linus did it, mercurial is better because he didn't.