我正在尝试从Windows上的How to make an HTTP POST request in node.js?执行Flex
程序,我已经安装了MingW
和make
编译器。
我在环境变量
中添加了以下路径之后,我尝试执行g++ -g -Wall -ansi -pedantic -std=gnu++0x bison.o lex.o main.o -o mini_lang -lfl
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lfl
collect2.exe: error: ld returned 1 exit status
make: *** [mini_lang] Error 1
命令,我得到了以下输出
Makefile
以下是OBJ = bison.o lex.o main.o
CC = g++
CFLAGS = -g -Wall -ansi -pedantic -std=gnu++0x
mini_lang:$(OBJ)
$(CC) $(CFLAGS) $(OBJ) -o mini_lang -lfl
lex.o: lex.c
$(CC) $(CFLAGS) -c lex.c -o lex.o
lex.c: lex_final.l
flex lex_final.l
cp lex.yy.c lex.c
bison.o: bison.c
$(CC) $(CFLAGS) -c bison.c -o bison.o
bison.c: grammar.y
bison -d -v grammar.y
cp grammar.tab.c bison.c
cmp -s grammar.tab.h tok.h || cp grammar.tab.h tok.h
main.o: main.cc
$(CC) $(CFLAGS) -c main.cc -o main.o
lex.o yac.o main.o: headers.h
lex.o main.o: tok.h
clean:
rm -f *.o *~ lex.c lex.yy.c bison.c tok.h grammar.tab.c grammar.tab.h grammar.output mini_lang
router.navigate(['/details/:id', {id: 5}])
拜托,有人可以帮我解决这个错误吗?
答案 0 :(得分:0)
我使用的是MingW + MSYS2,对我而言,Flex库位于c:\msys32\usr\lib\libfl.a
。
尝试在MinGW文件夹树中搜索libfl.a
,并使用-L
编译器/链接器标志,然后使用库所在的文件夹路径,指示编译器/链接器查找libfl.a
在该位置。
例如:
g++ -g -Wall -ansi -pedantic -std=gnu++0x bison.o lex.o main.o -o mini_lang -lfl -Lc:\msys32\usr\lib
答案 1 :(得分:0)
我的建议是找一个不同的教程。
您安装的Flex发行版不包含libfl
,或者您没有将libfl
的路径添加到正确的环境变量中。您可以尝试在-L
之前使用-lfl
选项明确地将路径添加到minilang规则中。... -L /path/to/directory-containinglibfl -lfl
。
但是,完全不需要-lfl
,因此更好的解决方案是将其从minilang
操作中删除,然后添加
%option noyywrap
到你的flex输入文件。 (这会阻止它生成一个调用yywrap
的扫描程序,因此您不需要yywrap
中的libfl
。)
答案 2 :(得分:0)
如果您使用 MinGW 编译器,请打开 InstallationManager 并安装此包:
mingw32-pthreads-w32