Erreur fonction system [Résolu]

Signaler
-
 pa -
Bonjour,
j'ai créer un petit compilateur en C qui fonctionne : il traduit un code d'un langage que j'ai créer en C .
A la fin j'ai rajouté : system("gcc -g compiler.c -o compiler");
pour que le programme compile directement le code C en executable .
Le programme marche mais renvoie a la fin un message d'erreur :

/usr/bin/ld : /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o : dans la fonction « _start » :
(.text+0x24) : référence indéfinie vers « main »
collect2: error: ld returned 1 exit status

j'aimerais savoir pourquoi alors que le programme marche (le fichier est bien compiler) et que la fonction system() ne renvoie pas d'erreur avec d'autres arguments.

voici la fonction principale de mon code avec les includes .

Configuration: Linux / Firefox 89.0



#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
long long ligne = 1;
bool com = false;
bool ch = false;
bool aff = false;
bool erreur = false;
FILE* fichier = NULL;

int main()
{
fichier = fopen("compiler.c","w+");
fputs("#include <stdlib.h>\n#include <stdio.h>\n\nint main()\n{",fichier);
yylex();
if(com) {printf("Erreur commentaire non-refermé !\n");erreur=true;}
if (ch) {printf("Erreur chaine non-refermé !\n");erreur=true;}
if (aff) {printf("Erreur Instruction Afficher non-refermé !\n");erreur=true;}
(erreur) ? printf("Erreur détecté dans le code : le fichier a quand même été compilé\n") : printf("Aucune erreur détecté dans le code : le fichier a été compilé\n");
fputs("\n\treturn 0;\n}",fichier);
system("gcc -g compiler.c -o compiler");
return 0;
}

2 réponses

Messages postés
579
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
16 juillet 2021
79
Bonjour,

Au moment de l'appel de
system()
, le fichier
fichier
est encore ouvert.
C'etait du au fait que le fichier etait encore ouvert merci cette erreur bete m'aura fait galérer