Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/06/2006, à 09:26

Lex Etyacc

problème de compilation avec lex

Pour commencer, mon code (on sait jamais) big_smile

%{
	#include <stdio.h>
	#include <stdlib.h>

	int opt_rep = 0;
	FILE *opt_log;
%}

%x TOTAL

%%

"Optimization Report"	opt_rep = 1;
"Phase : "[a-z ]*	if(opt_rep) fprintf(opt_log,"%s\n",yytext);
"TOTAL transformations"	if(opt_rep) BEGIN TOTAL;
\n			;
.			;

<TOTAL>[1-9]+		{
				fprintf(opt_log,"\tTOTAL transformation : %s\n",yytext);
				opt_rep = 0;
				BEGIN INITIAL;
			}
<TOTAL>.		;

%%

int main()
{
	opt_log = fopen("optimisation_log","a");
	yylex();
	fclose(opt_log);
}

La séquence de commandes que j'utilise :

moi dans un terminal a écrit :

flex nb_opt.lex
gcc -lfl -o nb_opt lex.yy.c

Et enfin, le problème mad

Le terminal a écrit :
/tmp/ccOVB5VD.o : Dans la fonction "main":lex.yy.c:(.text+0x1821): définitions multiples de « main »
/usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../lib/libfl.a(libmain.o):/build/buildd/flex-2.5.31/libmain.c:29: défini pour la première fois ici
/usr/bin/ld: Warning: size of symbol `main' changed from 23 in /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../lib/libfl.a(libmain.o) to 73 in /tmp/ccOVB5VD.o
/tmp/ccOVB5VD.o : Dans la fonction "yylex":lex.yy.c:(.text+0x444): référence indéfinie vers « yywrap »
/tmp/ccOVB5VD.o : Dans la fonction "input":lex.yy.c:(.text+0xde3): référence indéfinie vers « yywrap »
collect2: ld a retourné 1 code d'état d'exécution

C'est la première fois que ça me fait ça yikes

A oui, les derniers détails manquants smile
Je suis sur une dapper drake (kubuntu 6.06) et j'ai fait tous les updates/upgrades dispos avec adept.  Tout ayant été installé hier, j'ai à priori les dernières versions de gcc (4.0) flex et des librairies.

Des idées ?


Lex
Kubuntu Dapper Drake (kernel 2.6.15-25-686-smp) sur P4-HT 2.8GHz, 1Go RAM
Kubuntu Dapper Drake (kernel 2.6.15-23-386) sur Celeron 1.7GHz, 512Mo RAM
Kubuntu Dapper Drake (kernel 2.6.15.23-386) sur Core Duo T2400, 1G0 RAM

Hors ligne

#2 Le 12/06/2006, à 08:39

Lex Etyacc

Re : problème de compilation avec lex

Bon, j'ai trouvé la solution tout seul en essayant plein de choses finalement big_smile

Si jamais quelqu'un a le même problème pour le règler il suffit de compiler avec les flags -lfl ET -ll apparemment dans mon cas il lui fallait les deux librairies.


Lex
Kubuntu Dapper Drake (kernel 2.6.15-25-686-smp) sur P4-HT 2.8GHz, 1Go RAM
Kubuntu Dapper Drake (kernel 2.6.15-23-386) sur Celeron 1.7GHz, 512Mo RAM
Kubuntu Dapper Drake (kernel 2.6.15.23-386) sur Core Duo T2400, 1G0 RAM

Hors ligne