Problème de compilation linux gcc

Résolu/Fermé
vik_ Messages postés 18 Date d'inscription jeudi 16 janvier 2014 Statut Membre Dernière intervention 26 août 2014 - 27 févr. 2014 à 19:06
vik_ Messages postés 18 Date d'inscription jeudi 16 janvier 2014 Statut Membre Dernière intervention 26 août 2014 - 1 mars 2014 à 18:47
Bonjour,





je galère pour compiler un petit programme en gros quand je tape dans la console ça me met :


gcc: erreur: main.c: Aucun fichier ou dossier de ce type
gcc: erreur fatale: pas de fichier à l'entrée
compilation terminée.
./main.x: ligne 2: Erreur de syntaxe près du symbole inattendu « ( »
./main.x: ligne 2: 'int main(void){'

pourtant mon prog à l'air ok

#include<stdio.h>
int main(void){
printf("hello world");
}

j'ai pourtant fait un clique droit pour ouvrir le terminal , vu que mon fichier est sur le bureau /


Si une personne c'est comment je doit m'y prendre pour que ça fonctionne, merci d'avance .
A voir également:

9 réponses

vik_ Messages postés 18 Date d'inscription jeudi 16 janvier 2014 Statut Membre Dernière intervention 26 août 2014 6
Modifié par vik_ le 27/02/2014 à 21:32
Le fichier doit etre nommé main.c (dans ton cas)
place ce fichier dans ton repertoire Home (cd ~)
gcc main.c -o prog
./prog

...

re demain je changerais le nom, là il est en main .x

Pourvu que ça fonctionne .

en tout merci à vous,

si vous avez des tuyaux ou autre pour compiler je prend .Je galère pas pour écrire le prog, suffit de bien lire dans les bouquins être bien attentif et voir les vidéo sur you tube . Mais pour la compilation ça c'est autres chose, c'est toujours là que ça coince .D'ailleurs je m prends la tête alors que code block fait tout automatiquement, mais je ne sais pas je préfère tout savoir donc y compris compiler manuellement . Peut être qu'il serait plus sage aussi d'apprendre correctement linux et la console , et programmer sur windows avec code blocks le temps d'être à l'aise . Si ça ne fonctionne pas je ferais comme ça, je vais peut être trop vite aussi .
2
zizou1991 Messages postés 153 Date d'inscription mardi 18 septembre 2012 Statut Membre Dernière intervention 10 septembre 2015 1
27 févr. 2014 à 21:40
OUI ,EFFECTIVEMENT :)
bon courage
0
vik_ Messages postés 18 Date d'inscription jeudi 16 janvier 2014 Statut Membre Dernière intervention 26 août 2014 6
Modifié par vik_ le 1/03/2014 à 18:47
Merci a vous pour toutes les réponses,

j'ai réussi a trouver , il fallait que je renomme mon fichier et que je ré enregistre mon programme .

et ensuite faire

gcc main.c; ./main.x

point virgule important ,

pour changer le nom en main .x en a .out

gcc main.c; ./a.out tout simplement .

fallait juste que je renomme l'ex.

encore merci, je met en clos .
1
vik_ Messages postés 18 Date d'inscription jeudi 16 janvier 2014 Statut Membre Dernière intervention 26 août 2014 6
27 févr. 2014 à 19:37
maintenant j'ai ça

ciircle@ciircle:~/Bureau$ gcc -o main.c main.x; ./main.x
main.x: file not recognized: File format not recognized
collect2: ld a retourné 1 code d'état d'exécution
bash: ./main.x: Permission non accordée
ciircle@ciircle:~/Bureau$

j'ai pourtant fait sudo -i


Si une personne sais comment je doit faire pour que je puisse compiler .

Merci
0
zizou1991 Messages postés 153 Date d'inscription mardi 18 septembre 2012 Statut Membre Dernière intervention 10 septembre 2015 1
27 févr. 2014 à 20:31
voici
chmod +x main.c
0
zizou1991 Messages postés 153 Date d'inscription mardi 18 septembre 2012 Statut Membre Dernière intervention 10 septembre 2015 1
27 févr. 2014 à 20:28
Bonsoir,


essaies avec ce bout de code

#include <stdio.h>


int main ()
{

/* afficher le mot bonjour et sauter une ligne */
printf("bonjour !!!\n");

return 0; // obligatoire
}

Puis,
gcc bonjour.c -o appli_bonjour
./appli_bonjour
0

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

Posez votre question
vik_ Messages postés 18 Date d'inscription jeudi 16 janvier 2014 Statut Membre Dernière intervention 26 août 2014 6
27 févr. 2014 à 20:41
salut

j'essaye direct et te dit si c'est ok .

je ne comprend pas n'empêche ça fonctionné bien pourtant ,des que j'ai voulu recréer un prog dans mon éditeur de texte ça a commencer à merdouillé .

merci
0
vik_ Messages postés 18 Date d'inscription jeudi 16 janvier 2014 Statut Membre Dernière intervention 26 août 2014 6
27 févr. 2014 à 20:50
re,

j'ai commencer par la ligne chmod ça a rien fait .

j'ai copier ton programme

#include <stdio.h>


int main ()
{


printf("bonjour !!!\n");

return 0;
}


gcc bonjour.c -o appli_bonjour
./appli_bonjour


en réponse dans la console :

ciircle@ciircle:~/Bureau$ gcc bonjour.c -o appli_bonjour
gcc: erreur: bonjour.c: Aucun fichier ou dossier de ce type
gcc: erreur fatale: pas de fichier à l'entrée
compilation terminée.


là je ne sais vraiment pas, je peux aller sur code block sinon mais je t'avoue je préfère compiler manuellement, autant tout faire pour apprendre le C .

sinon je peux pas supprimer gedit et le réinstallé ? ça peut peut être venir de là , enfin je dit ça mais là je ne trouve vraiment pas pourquoi il veut pas compilé .

merci en tout cas !
0
Maximilien LIX Messages postés 311 Date d'inscription jeudi 25 juillet 2013 Statut Membre Dernière intervention 30 octobre 2014 23
27 févr. 2014 à 20:58
Essaie d'utiliser gcc avec la commande sudo.
0
zizou1991 Messages postés 153 Date d'inscription mardi 18 septembre 2012 Statut Membre Dernière intervention 10 septembre 2015 1
27 févr. 2014 à 20:58
essaies de te placer dans le dossier contenant ton fichier
cd nomRepertoire
0
Maximilien LIX Messages postés 311 Date d'inscription jeudi 25 juillet 2013 Statut Membre Dernière intervention 30 octobre 2014 23
27 févr. 2014 à 21:07
sudo chmod +x ton_programme.c
gcc ton_programme.c
et ensuite
./a.out
a.out c'est le résultat de ce que tu viens de compiler. On transforme le programme en code objet soit pour l'utiliser directement soit dans la plus part des cas pour de la compilation séparée.
exemple de compilation séparée :
gcc -c programme-fonction.c
gcc -c main.c
gcc programme-fonction.o main.o -o mon-programme

avec un header qui contient le prototype de tes fonctions faites maison et qui est inclus dans le main et le programme-fonction. (mettre impérativement une structure conditionnelle dans le préprocesseur pour éviter les inclusions infinies ^^)
0
vik_ Messages postés 18 Date d'inscription jeudi 16 janvier 2014 Statut Membre Dernière intervention 26 août 2014 6
27 févr. 2014 à 21:04
re ,

toujours pareil :

ciircle@ciircle:~/Bureau$ sudo gcc -o main.x main.c; ./main.x
[sudo] password for ciircle:
gcc: erreur: main.c: Aucun fichier ou dossier de ce type
gcc: erreur fatale: pas de fichier à l'entrée
compilation terminée.

mon fichier est sur mon bureau sinon , je fait clique droit sur le bureau ouvrir terminal ,le chemin est déjà spécifier .Vraiment je ne comprend pas, tout fonctionner pourtant bien avant .Nautilus qui merde peut être , .

je verrais demain je dois me déco,
ça doit être un problème de fichier mal localisé la console le spécifie , mais le chemin est pourtant bon bref c'est compliqué là .

Merci a vous .
0
zizou1991 Messages postés 153 Date d'inscription mardi 18 septembre 2012 Statut Membre Dernière intervention 10 septembre 2015 1
27 févr. 2014 à 21:14
Le fichier doit etre nommé main.c (dans ton cas)
place ce fichier dans ton repertoire Home (cd ~)
gcc main.c -o prog
./prog
0
Maximilien LIX


salut,

je veux bien faire tout ça mais je suis débutant ,j'ai encore assez de mal avec la console . là je ne sais pas comment faire, j'ai fait a.out

en gros

sudo chmod +x main.x ' entrée)
./a.out

ça n ma rien compilé

j'ai refait

sudo chmod +x main.x ./a.out

pareil rien toujours ce message :

ciircle@ciircle:~/Bureau$ sudo chmod +x main.x ./a.out
[sudo] password for ciircle:
chmod: impossible d'accéder à «./a.out»: Aucun fichier ou dossier de ce type


Je ne sais pas quoi faire , la solution doit être toutes proche mais comme je débute je l'ai un peu là surtout que je suis motivé pour apprendre le langage c .si je vais sur code blocks tu pense que ça peut suffire pour bien apprendre ?, par ce que franchement je tiens vraiment à apprendre le c /et linux tant cas faire et compiler manuellement .

Merci a vous , je dois vraiment me déco, demain je regarderais !
0
Maximilien LIX Messages postés 311 Date d'inscription jeudi 25 juillet 2013 Statut Membre Dernière intervention 30 octobre 2014 23
Modifié par Maximilien LIX le 27/02/2014 à 21:51
Nope !
chmod est une commande qui gère les droits sur les fichiers.
./a.out est à executer lorsque tu as compilé ton programme avec gcc.
un conseille, la commande ls sert à lister tes fichiers tape ls -l est tu verras apparaître les préférences d'administrartion de tes fichier.

chmod +x rajoute x qui symbolise l'execution. En clair un fichier qui contien x comme droit d'utilisation sera reconnu par l'OS comme étant un fichier executable.

Un exemple.
gamerlix@crunchbang-LIX:~/documents/exemple$ ls -l
total 4
-rw-r--r-- 1 gamerlix gamerlix 19 févr. 27 21:36 script.sh
gamerlix@crunchbang-LIX:~/documents/exemple$

Mon script ne pourra pas être executé sauf si j'en donne le droit !
gamerlix@crunchbang-LIX:~/documents/exemple$ sudo chmod +x script.sh
[sudo] password for gamerlix:
gamerlix@crunchbang-LIX:~/documents/exemple$ ls -l
total 4
-rwxr-xr-x 1 gamerlix gamerlix 19 févr. 27 21:36 script.sh
C'est bon je peux executer mon script ! mais comment ? Commande ./nom-du-fichier
./script.sh

Bon je pense que tu as un peu compris ^^
maintenant voyons ton programme (que j'appellerai main.c)
tu es dans ton dossier (commande cd pour te déplacer )
tu listes tes fichiers dans le dossier dans lequel tu te trouves normalement ton main.c sera là. (Normalement pas besoin de faire de chmod +x pour ton main.c)
commande ls
puis gcc main.c

gcc main.c ça compile ton programme , mais il n'y a pas de main.o ou de main.exe comme sous windows.
Le compilateur ne fait que compiler mais il ne transforme pas ton programme en code objet executable.
Mais pourtant tu peux tester ton programme et donc l'executer ! ^^
commande ./a.out

En effet lorsque ton programme va être compilé tu vas voir un drôle de fichier apparaître la a.out. C'est lui ton programme executable .
Tu peux donc l'executer via ./
donc ./a.out

et voilà un magnifique hello world dans ton terminal ^^

Oups si tu veux transformer ton programme en executable utilise -o avec gcc de cette manière.

gcc main.c -o mon-programme

PS: pareil que l'exemple avec mon script dans ce cas précis il faut accorder le droit d'execution à ton nouveau programme donc
sudo chmod +x mon-programme

de toute façon tu fais ls -l et tu regarde si tu n'as pas un x quelque par ^^ Voili voilou Bon courage
0
Maximilien LIX Messages postés 311 Date d'inscription jeudi 25 juillet 2013 Statut Membre Dernière intervention 30 octobre 2014 23
27 févr. 2014 à 21:54
je rajouterai qu'on utilise toujours ./a.out après avoir compilé et qu'on fait un gcc main.c -o programme uniquement lorsque tu es sûr que ton programme fonctionne correctement
0