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;
}