我正在嘗試使用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