运行以下命令后:
g++ lex.yy.c -lfl
我收到以下错误:
/usr/bin/ld: cannot find -lfl
我该如何解决?
答案1
lex.yy.c
是默认输出文件名lex
,C(和 C++)的词法分析器预处理器。这连接器( ld
) 正在查找名为的文件libfl.so
(如果是动态链接;如果libfl.a
是静态链接则为)。这是由生成的词法分析器所需的运行时库柔性,一个 lex 实现。
如果您lex.yy.c
自己生成了flex
,请检查 Flex 是否已正确安装。除了在路径中包含可执行文件之外flex
,您还需要在库搜索路径中包含libfl.so
和libfl.a
(libfl_pic.a
如果存在)(通常为/usr/lib
或/usr/local/lib
,具体取决于 Flex 是否来自系统包)。如果 Flex 位于非标准位置,请使用以下命令指定库搜索路径-L
:
~/software/flex/bin/flex mylexer.l
g++ lex.yy.c -L ~/software/flex/lib -lfl
答案2
在我的 SciOs 发行版中安装该flex-devel.x86_64
软件包对我有用。