【问题标题】:mingw32/bin/ld.exe: cannot find -lfl collect2.exe: error: ld returned 1 exit statusmingw32/bin/ld.exe:找不到-lfl collect2.exe:错误:ld返回1退出状态
【发布时间】:2018-05-04 09:34:30
【问题描述】:

我正在尝试从 Windows 上的 Github 执行 FLEX 程序,并且我已经安装了 Flex 和 MingW 编译器。

我在下面添加了环境变量的路径

  1. C:\MinGW\bin
  2. C:\MinGW\msys\1.0\bin

之后,我尝试执行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

请问,谁能帮我解决这个错误?

【问题讨论】:

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


    【解决方案1】:

    我的建议是找一个不同的教程。

    您安装的 flex 发行版不包含 libfl,或者您没有将 libfl 的路径添加到正确的环境变量中。您可以尝试将路径显式添加到 minilang 规则中,在 -lfl 之前使用 -L 选项:... -L /path/to/directory-containinglibfl -lfl。

    但是,-lfl 绝对不需要,所以更好的解决方案是从minilang 操作中删除它,然后添加

    %option noyywrap
    

    到你的 flex 输入文件。 (这将阻止它生成调用yywrap 的扫描仪,因此您不需要yywrap 中的libfl。)

    【讨论】:

      【解决方案2】:

      如果你使用 MinGW 编译器,打开 InstallationManager 并安装这个包:

      mingw32-pthreads-w32
      

      【讨论】:

        【解决方案3】:

        我使用的是 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

        【讨论】:

          猜你喜欢
          • 2020-05-06
          • 1970-01-01
          • 2014-09-03
          • 2021-02-07
          • 1970-01-01
          • 1970-01-01
          • 2017-12-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多