Gcc et execution

starghof Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,
pour compiler un programme c sous linux
on ecrit
gcc -o saf.c saf
et pour l'executer on ecrit
./saf
mais il la considere comme etant un repertoire ou fichier(./)
et ne peut pas l'executer.
s'il vous plais que dois-je faire.
merci
Configuration: Windows XP
Firefox 3.0.3

5 réponses

  1. na3nou3ti Messages postés 9 Date d'inscription   Statut Membre
     
    pour compiler :
    gcc saf.c
    pour executer:
    ./a.out
    j'espere que ca marche
    0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    c'est
    gcc -o saf saf.c ; ./saf
    0
  3. bob031 Messages postés 8228 Statut Membre 473
     
    salut,

    mais il la considere comme etant un repertoire ou fichier(./)

    peut-être faut-il aussi rendre le script exécutable ...
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      Normalement le fichier est exécutable dès sa création par gcc.
      lami20j@debian:~/trash$ ls code_retour
      ls: code_retour: Aucun fichier ou répertoire de ce type
      lami20j@debian:~/trash$ gcc -o code_retour code_retour.c
      lami20j@debian:~/trash$ ls -l code_retour
      -rwxr-xr-x 1 lami20j lami20j 7376 2008-11-02 10:22 code_retour


      0
    2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Re,

      Comme l'a bien dit dubcek il y a une erreur au niveau de la commande gcc
      Erreur qui n'est pas montrée par starghof

      Voilà ce qui ce passe si on exécute gcc -o fichier.c fichier
      lami20j@debian:~/programmation_systeme_en_c_sous_linux$ gcc -o fork.c fork
      gcc: fork: Aucun fichier ou répertoire de ce type
      gcc: no input files

      0
  4. Manu
     
    Bonjour,

    pour compiler un programme c sous linux
    on ecrit
    gcc -o saf.c saf


    euh..., essayer plutôt

    gcc -o saf saf.c

    Manu
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Halmir Messages postés 3 Statut Membre
     
    mais c très simple
    tu fais: gcc -o saf.o -c saf.c (compilation)
    gcc -o saf.c saf.exe
    ./saf.exe (execution)

    ou soit:
    gcc saf.c
    ./a.out

    C'est s simple que ça
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      au moins tu as testé ce que tu avances?
      mais c très simple
      tu fais: gcc -o saf.o -c saf.c (compilation)
      gcc -o saf.c saf.exe
      ./saf.exe (execution)


      Voici ce qu'on obtiens d'après tes conesils
      lami20j@debian:~/ssh_shared/programmation_systeme_en_c_sous_linux$ gcc -o fork.o fork.c
      lami20j@debian:~/ssh_shared/programmation_systeme_en_c_sous_linux$ gcc -o fork.c fork.exe
      fork.exe:(.rodata+0x0): définitions multiples de « _fp_hw »
      /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o:(.rodata+0x0): défini pour la première fois ici
      fork.exe: dans la fonction « __data_start »:
      (.data+0x4): définitions multiples de « __dso_handle »
      /usr/lib/gcc/i486-linux-gnu/4.1.2/crtbegin.o:(.data+0x0): défini pour la première fois ici
      fork.exe: dans la fonction « _init »:
      /build/buildd/glibc-2.3.6.ds1/build-tree/i386-libc/csu/crti.S:36: définitions multiples de « _init »
      /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crti.o:/build/buildd/glibc-2.3.6.ds1/build-tree/i386-libc/csu/crti.S:36: défini pour la première fois ici
      fork.exe: dans la fonction « _start »:
      ../sysdeps/i386/elf/start.S:65: définitions multiples de « _start »
      /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o:../sysdeps/i386/elf/start.S:65: défini pour la première fois ici
      fork.exe: dans la fonction « _fini »:
      /build/buildd/glibc-2.3.6.ds1/build-tree/i386-libc/csu/crti.S:52: définitions multiples de « _fini »
      /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crti.o:/build/buildd/glibc-2.3.6.ds1/build-tree/i386-libc/csu/crti.S:52: défini pour la première fois ici
      fork.exe:(.rodata+0x4): définitions multiples de « _IO_stdin_used »
      /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o:(.rodata+0x4): défini pour la première fois ici
      fork.exe: dans la fonction « __data_start »:
      (.data+0x0): définitions multiples de « __data_start »
      /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o:(.data+0x0): défini pour la première fois ici
      collect2: ld returned 1 exit status
      lami20j@debian:~/ssh_shared/programmation_systeme_en_c_sous_linux$
      

      En fait ta 1ère commande crée l'exécutable saf.o au lieu d'un fichier objet (malgré l'extension) la deuxième étant inutile et incorrecte.

      Si tu veux créer un fichier objet .o alors tu dois faire comme ça
      gcc -c fork.c
      gcc -o fork.exe fork.o
      mais on peu le faire directe sans créer le fichier objet comme l'a dit dubcek dans son message
      0