flex と bison を使用して単純なスクリプト言語を作成しようとしています。今、私は電卓を動かそうとしています。
しかし、私はそれをコンパイルすることはできません。このメイクファイルを実行すると:
OBJECTS = hug.tab.o hug.yy.o
PROGRAM = hug.exe
CPP = g++
LEX = flex
YACC = bison
.PHONY: all clean
all: $(OBJECTS)
$(CPP) $^ -o $(PROGRAM)
clean:
$(RM) *.o *.output *.tab.* *.yy.* $(PROGRAM)
%.tab.o: %.tab.cpp
$(CPP) -c -o $@ $<
%.tab.cpp: %.ypp
$(YACC) -vd $<
%.yy.o: %.yy.c
$(CPP) -c -o $@ $<
%.yy.c: %.l
$(LEX) -o $@ $<
%.o: %.cpp
$(CPP) -c -o $@ $<
.l および .ypp ファイルで、次のエラーが発生します。
undefined reference to `yylex()'
そして、次のall
ようなコマンドを作成すると:
$(CPP) $^ -o $(PROGRAM) -lfl
見つからなかったと表示されます-lfl
。そして、私がこのようにすると:
$(CPP) $^ -o -lfl $(PROGRAM)
エラーに戻りundefined reference
ます。
申し訳ありませんが、私はこれについて少し無知です。
編集:フレックスがインストールされています。-lfl から C:/GnuWin32/lib/libfl.a に変更しようとしました (Linux には奇妙な問題があり、まだ Mac を持っていないため、Windows を使用しようとしています)。同じエラー。