Ich versuche Flex und Bison zu verwenden, um eine einfache Skriptsprache zu erstellen. Im Moment versuche ich nur, einen Taschenrechner zum Laufen zu bringen.
Ich kann es jedoch nicht kompilieren. Wenn ich dieses Makefile ausführe:
%Vor%in meinen .l- und .ypp-Dateien, bekomme ich diesen Fehler:
%Vor% Und wenn ich den Befehl für all
so mache:
es sagt, es konnte -lfl
nicht finden. Und wenn ich es so mache:
es geht zurück zum undefined reference
Fehler.
Tut mir leid, ich bin irgendwie ratlos.
EDIT: Ich habe flex installiert. Ich habe versucht, es von -lfl in C: /GnuWin32/lib/libfl.a zu ändern (Ich versuche Windows zu benutzen, weil Linux auf meinen Computern seltsame Probleme hat und ich noch keinen Mac habe), aber es hat immer noch den gleicher Fehler.
Das Problem besteht darin, dass Sie hug.yy.c mit g ++ (als C ++ behandeln) anstelle von gcc kompilieren. Dies ist die Datei, die yylex
definiert. Wenn Sie sie also als C ++ kompilieren, erhalten Sie eine CYXYYLEX-Funktion, während die anderen Dateien nach einer CYYLEX-Funktion suchen.
Versuchen Sie, extern "C" int yylex();
in den ersten Abschnitt Ihrer hug.l-Datei zu stecken, damit die C-Verknüpfung für yylex anstelle von C ++ verwendet wird.
Haben Sie die Flex-Bibliothek installiert? Wenn ja, versuche etwas wie
%Vor%Tags und Links bison lex flex-lexer g++ undefined-reference