Gcc et execution

Fermé
starghof Messages postés 177 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 8 avril 2011 - 2 nov. 2008 à 02:02
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 2 nov. 2008 à 12:06
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

5 réponses

na3nou3ti Messages postés 9 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 16 février 2009
2 nov. 2008 à 08:58
pour compiler :
gcc saf.c
pour executer:
./a.out
j'espere que ca marche
0
dubcek Messages postés 18784 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 avril 2025 5 630
2 nov. 2008 à 09:13
hello
c'est
gcc -o saf saf.c ; ./saf
0
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 473
2 nov. 2008 à 09:34
salut,

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

peut-être faut-il aussi rendre le script exécutable ...
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
2 nov. 2008 à 10:23
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
2 nov. 2008 à 10:28
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Halmir Messages postés 3 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 2 novembre 2008
2 nov. 2008 à 11:41
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
2 nov. 2008 à 12:06
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