mingw32 / bin / ld.exe:找不到-lfl collect2.exe:错误:ld返回1退出状态

时间:2017-11-21 02:39:32

标签: c++ windows gcc makefile flex-lexer

我正在尝试从Windows上的How to make an HTTP POST request in node.js?执行Flex程序,我已经安装了MingWmake编译器。

我在环境变量

中添加了以下路径
  1. C:\ MinGW的\ BIN
  2. C:\ MinGW的\ MSYS \ 1.0 \ BIN
  3. 之后,我尝试执行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}])

    拜托,有人可以帮我解决这个错误吗?

3 个答案:

答案 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