我正在使用flex
和bison
构建一个我从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
我该如何解决这个问题?
答案 0 :(得分:46)
让我猜一下,尝试在OS / X上使用flex?
尝试-ll而不是-lfl
所以,OS / X上的flex库名称由于某种原因只是任意不同。 OS / X并不完全是Linux,但它非常接近。你有一些选择。
答案 1 :(得分:0)
警告:缺少类型说明符,默认为'int'
表示你应该声明main函数的返回类型。将int
放在功能定义中。
ld:找不到-lfl的库
flag -l表示编译器必须使用libfl.a
来构建程序。正如@waTeim上面所说,对于Mac OS,你可以使用libl.a,但是这个lib也可能不存在。还有另一种方法是放置
%option noyywrap
在flex * .l文件的顶部。在这种情况下,您可以在没有其他库的情况下进行编译。