未找到-lfl的库

Library not found for -lfl

本文关键字:的库 -lfl      更新时间:2023-10-16

我正在使用 flexbison来构建我从github克隆的简单计算器项目。

但是在终端输入make后,我收到了以下消息:

gcc -o calc calc.tab.c lex.yy.c -lfl
calc.y:48:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
main() {
^~~~
1 warning generated.
ld: library not found for -lfl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [calc] Error 1

我如何解决此问题?

让我猜测,尝试在OS/X上使用Flex?

尝试-ll而不是-lfl

在OS/X

上使用Flex

是的,由于某种原因,OS/X上的Flex库名称只是任意不同的。OS/X并非完全是Linux,但非常接近。您在这里有一些选择。

  1. 您只需仅拥有一个单独的构建系统和OS/X的源文件即可。当然,苹果可能会因为推动Xcode,Objective-C而不是太多的互操作性而喜欢。

  2. 您可以构建VS Linux,然后与Mac端口和自制。

  3. 您可以使用Autotools创建项目。这不是一个很棒的链接,学习该系统很粗糙,但是对于Linux来说,这是一件标准的事情。这实际上会起作用,如果您对此有耐心,OS/X足够近,以至于基于自动的构建将可以使用。

  4. 最近,我被开启了可可录,我认为这是加入开源社区和Xcode的尝试。这是一种半为1和3 sorta,重点是将外部源模块化并将其编译到.App(通过Xcode)中。

警告:键入指定符,默认为'int'

意味着您应该声明主函数的返回类型。将int放置在功能分化中。

ld:未找到-lfl

的库

flag -l表示组合必须使用 libfl.a来构建程序。正如@Wateim上面所说,对于Mac OS,您可以使用libl.a,但是该lib可能不存在ALSE。还有另一种方法是放置

%option noyywrap

在flex *.l文件的顶部。在这种情况下,您可以不用其他液体进行编译。