[résolu]Problème sous geany

bonsoir!
je commence à apprendre à programmer. J’utilise geany, mais je rencontre un souci. Lorsque je veux compiler, je n’ai pas d’erreurs, mais je n’arrive pas à lancer le programme ensuite…
Je précise qu’il se crée un fichier *.o en plu du *.c, mais je n’ai pas d’éxacutable.

Je suis sous debian lenny.

Ben si tu l’as ton exécutable… ton .o … nan? :unamused:

Il faut le rendre exécutable si il ne l’est pas:

chmod +x nom-du-point-o.o

Puis pour le lancer à partir d’un terminal:

./nom-du-point-o.o :wink: … Enfin, il me semble… :wink:

Bon courage à tous et toutes… :smt006

ouais… le souci, c’est que je voudrais le lancer dans le terminal de geany…

[quote=“thuban”]ouais… le souci, c’est que je voudrais le lancer dans le terminal de geany…[/quote]Et?.. qu’est-ce qui ne “marche pas”? Je ne connaissais pas geany, je viens de l’installer et j’ai “testé” avec le fameux “hello world”… le fichier .o est directement avec le +x… j’ai lancé le .o via le “terminal” de geany: aucun problème… :unamused: … donc… où est-ce que ça “bloque” chez toi?

Es-tu au “bon endroit” dans ton terminal? :unamused:
As-tu des erreurs lors de la compilation de ton programme?
As-tu des erreurs lors de la “construction”?

Tout détail n’est pas “superflu”… :wink:

:smt006

salut salut !

La cavalerie arrive pas trop tard j’espère :mrgreen:

Alors quand tu compiles bêtement un fichier C avec le menu Construire > compiler de Geany, il te fait un fichier objet (le *.o). Ce fichier contient le code objet correspondant à ton *.c, mais ça n’est pas l’exécutable.

Si tu veux un exécutable, et que ton programme ne contient qu’un seul fichier, il ne faut pas choisir “compiler” dans le menu de Geany, mais “construire”.

Ainsi Geany va compiler le fichier et construire l’exécutable (en fait c’est gcc qui le fait). Tu pourras le lancer ton exécutable par le menu ad-hoc.

Ahhh, yess!!! ca marche! en effet, avec construire c’est bon! j’avais peur de me planter quelque part, étant donné que je commence vraiment, je me disais "mais, un *.o, c’est pas ça mon binaire…???) :neutral_face:
Enfin, j’utilisais le raccourci de geany, maintenant, j’ai cherché dans les options et ai trouvé le “construire” à la place de compiler
ensuite, lorsque je clique sur éxécuter, ca marche, j’ai le terminal qui s’ouvre!

merci beaucoup!

bon week end!

Ça n’est pas parce que c’est du binaire que le système d’exploitation sait quoi faire avec…

Je ne suis pas très pédagogue et je n’ai sûrement pas les bons mots, mais je vais tenter une petite explication…

Lorsque tu compile ton *.c en *.o, ton fichier source passe à la moulinette de gcc, et tu obtiens donc le code objet dans le *.o
Pour avoir un exécutable, il faut que gcc regroupe éventuellement les différents *.o (mais il peut y en avoir un seul), les *.a (librairies statiques s’il y en a), etc… pour construire un exécutable au bon format (ELF sous linux) pour qu’il soit reconnu par le système d’exploitation. On appelle cela l’édition de liens. Après, avec l’exécutable, ton OS sait par quelle instruction il doit commencer, etc…

Quand tu fais “Compiler” sous Geany, tu ne fais que la compilation. Quand tu fais “construire”, tu fais la compilation et l’édition de liens, et tu te retrouve avec un exécutable ELF que tu peux exécuter.

Tu peux faire un exécutable à partir de plusieurs sources, il faut azlors faire de la compilation séparée : tu compile chaque *.c en *.o, puis tu fais une édition de liens avec tous ces *.o pour avoir un seul exécutable. Là les raccourcis de Geany ne sont pas pratiques, il vaut mieux passer par un Makefile ou un autre gestionnaire de projet permettant d’automatiser les étapes.

Quelques recherches sur le net t’en apprendront sûrement beaucoup sur le sujet :wink:

@+

pour quelqu’un de pas très pédagogue tu t’en sors plutot bien! :wink:
j’avais vu à peu près tout ça déja, sauf un truc : le makefile : il reste pour moi completement flou : à quoi sert-il vraiment, de quoi est-il composé…etc
je verrais sans doute ça plus tard…