Compilation/execution programme C sous linux

Résolu
Bonjour,
je veux paraitre noob mais j'ai un problème d'execution de programme C sous Linux
Je développais auparavant avec l'IDE Code blocks sous Windows et je viens de passer à linux, marre de la fenêtre.

J'ai un fichier test.c tout bête, le Bonjour Monde

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  printf("Hello World\n");
  system("PAUSE");
  return 0;
}


pour le compiler je réalise cette commande:
cedric@ubuntu:~/Documents/C$ gcc -o test test.c

J'aimerais maintenant l'executer, mais je n'y arrive pas, même par l'interface graphique,
Si vous pouviez m'aider...
merci d'avance
Configuration: Linux
Firefox 3.0.7

11 réponses

  1. Contributeur
    Salut,
    Tout d'abord, déjà tu peux enlever system("PAUSE") qui peut être utile sur Windows mais pas sur linux compte tenu du fait que tu souhaites le lancer en console.
    Sinon pour lancer ton programme, teste :
    ./test

    Cdlt
    1. Tout à fait, je n'avais même pas lu le code, tout content de pouvoir donner la solution de suite ^^ !
  2. Salut, il suffit de te placer dans le répertoire dans lequel se trouve le fichier exécutable et de taper en console
    ./test
    Sachant que le . désigne le répertoire courant, tu tapes donc le chemin vers ton fichier exécutable.
    1. Merci beaucoup, désolé du dérangement
      A+
      Et vive Linux, pourquoi ne m'y suis-je pas mis avant?...
      1. Pas de soucis, on a tous de petits problèmes en débutant ^^ !

        Content que tu apprécies Linux, profite bien de cette nouvelle expérience ;p
    2. Merci à toi aussi, c'est vrai qu'il ne sert à rien et en plus il me met:
      cedric@ubuntu:~/Documents/C$ gcc -o  test  test.c
      

      C'est qu'il n'en a pas besoin, compte tenu qu'on est déjà dans la console?
      1. Pardon, il me met
        sh: PAUSE: not found
        1. D'accord, je ne comprenais pas ton post précédent ^^ ! Effectivement, l'instruction pause n'existe pas sous nux.
      2. Contributeur
        Lorsque tu utilises la commande system, cela va exécuter la commande en appelant /bin/sh -c. Et puisque PAUSE n'est pas une commande issue du monde Linux, /bin/sh t'affiche qu'il ne la connaît pas. D'où le message d'erreur. T'obtiendras la même erreur en tapant directement PAUSE dans la console.

        C'est qu'il n'en a pas besoin, compte tenu qu'on est déjà dans la console?
        En fait sur windows, la plupart des personnes lancent leur exécutable en double cliquant. Cela va donc créer une console qui se fermera lorsque l'application prendra fin. Et comme cela va très vite, l'utilisateur ne voit pas grand chose. C'est pour cela qu'on utilise system("PAUSE");.
        Mais lorsque tu lances en console, la fenêtre ne se fermera pas à la fin du programme. Donc, c'est complètement inutile de mettre un system("PAUSE"); qui de plus nuit à la portabilité.
        1. Bonjour, je compile sous linux avec Kate, et je n'arrieva pas a executer, voilà ce que j'ai mon fichier s'appelle ! mimi.c

          et ya aucun résultat, je pense que c'est une question de répértoire, je ne sais pas comment entre et sortir, aidez-moi s'il vous plais !! merci

          le prg est le suivant :

          #include<stdio.h>

          main()
          {
          int i;

          for(i=1;i<10000;i++)
          printf("bonjour\n");
          getch();getch();
          }

          quand j'introduit :
          gcc mimi.c -Wall -o mimi

          le compilateur m'ecrit :

          bash: gcc : command not found
          1. Contributeur
            Salut,
            Linux c'est un peu vague ;-))). Faut plutôt préciser ta distribution, car il en existe tellement. Linux désigne juste le kernel.
            Sinon ton erreur vient plutôt du fait que gcc n'est pas installé sur ta distrib.
            Il te faut donc l'installer, et tout rentrera dans l'ordre.

            Cdlt
          2. @fiddysalut !!

            aussi je suis débutante en Linux et j'ai une question qui sera encore bête...
            une fois on a exécuté un fichier fortran sous Linux, est ce qu'on peut faire une pause puis reprendre le calcul comme sur windows??

            Merci d'avance
        2. Héhé bienvenue dans l'informatique belle lady ;)
          1. Ben merci
            mais vous n'avez pas de réponse ;)
        3. héhé c juste

          Mais calcul de quoi en fait pasque on sait même pas ce que fais ton fichier en fortran.
          C peut être une question bête mais je trouve que ta question est loin d'être précise
          1. c'est un programme qui calcul le champ électromagnétique, c'est une méthode physique (FDTD) .. j'ai pas trouvé de problème ni à le compiler ni à l'exécuter. le calcul tourne mais il est un peut lourd sur le pc donc je m'oblige parfois à l'arrêter (faire une pause) puis le relancer, ceci est faisable sur windows mais je ne sais pas comment faire sur Linux.

            voila mon problème :) j'espère que vous l'avez compris
        4. Ok ma jolie c bien de faire appel aux experts pour tes éventuels soucis , on est toujours là pour toi ;D
          Soit dit en passant compte tenu de la fin de la journée je vais essayer d'y réfléchir. Tu prépares une année en physique c ça ?
          1. merci :) donc si tu trouve la réponse ça sera parfait pour moi ...
            parcontre je suis en doctorat, et c'est la première fois que je travail sur Linux :s
            bon a 2main alors
          2. alors toto!!! tu ne peux pas m'aider?? t'as pas pu trouver une solution :(
          3. salut les gars s'il vous plait mi j'ai un probleme j'ai mon fichier test.c :
            #include <stdlib.h>
            #include <stdio.h>
            int main(int argc,char *argv[])
            {
            printf("salut le monde");
            return 0;
            }

            quand je lance la compil avc la comande gcc -o test.c
            On me dit "gcc: erreur fatale: pasde fichier a l'eintree \n Cmpliation termnee) ques ce ke je fais?
          4. Contributeur
            Salut fofiedelly,
            Teste plutot : gcc toto.c -o toto
            Pour exécuter : ./toto
            Cdlt,