我正在尝试使用flex和野牛来创建一个简单的脚本语言。现在,我只是想让计算器工作。未定义的引用'yylex()'
虽然我无法编译它。当我运行这个Makefile:
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 [email protected] $<
%.tab.cpp: %.ypp
$(YACC) -vd $<
%.yy.o: %.yy.c
$(CPP) -c -o [email protected] $<
%.yy.c: %.l
$(LEX) -o [email protected] $<
%.o: %.cpp
$(CPP) -c -o [email protected] $<
我.L和.ypp文件
,我得到这个错误:
undefined reference to `yylex()'
如果我做了命令all
这样的:
$(CPP) $^ -o $(PROGRAM) -lfl
它说它找不到-lfl
。如果我这样做:
$(CPP) $^ -o -lfl $(PROGRAM)
它会回到undefined reference
错误。
对不起,我对此毫无头绪。
编辑:我有柔性安装。我尝试将其从-lfl更改为C:/GnuWin32/lib/libfl.a(我尝试使用Windows,因为Linux在我的计算机上有奇怪的问题,而我还没有Mac),但它仍然有同样的错误。
您需要阅读的C/C++编译器,您使用的文档。 “-o”是生成输出文件的选项;下一个参数必须指定该文件的名称。 “-l”指定一个库;该文档将告诉您编译器将寻找这个库的命名约定和位置。作为猜测,你还没有安装flex库。 – kdgregory 2009-09-26 15:46:56
我得到同样的问题。我的程序正在用gcc编译,g ++版本问题。 – Dilawar 2011-12-07 20:25:21