Erreur fonction system

Résolu/Fermé
pa - 13 juil. 2021 à 21:46
 pa - 14 juil. 2021 à 10:08
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

Dalfab Messages postés 700 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 20 janvier 2023 99
13 juil. 2021 à 21:51
Bonjour,

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