8

我一直在学习使用 Flex(词法分析器),并且一直在使用以下命令进行编译:

gcc -lfl -o test lex.yy.c

一切都很好。但是,我想将它与其他文件链接,所以我单独编译并链接它

gcc -c lex.yy.c

其次是

gcc -lfl -o test lex.yy.o

但 gcc 告诉我有一个未定义的引用yywrap()。那么,这里发生了什么?

我正在使用 Flex 2.5.35、gcc 4.7.2 和 ld 2.22

4

5 回答 5

22

-lfl在末尾而不是开头添加。

于 2012-12-28T12:47:13.837 回答
4

使用gcc lex.yy.c -ll. 否则它将产生一个未定义的引用yywrap

于 2014-11-04T11:51:51.233 回答
2

或者,如果您不想使用该库,只需#define yywrap().l 文件中的 1,或提供yywrap()返回 1 的方法。

它已记录在案。

于 2013-01-12T02:17:30.047 回答
1

我的解决方案是:

sudo apt-get install flex

于 2013-05-23T13:02:18.217 回答
1

我创建了一个文件 addon.c

int yywrap (void )
{
    return 1;
}

并将其添加到目标中。

于 2016-10-24T22:04:07.167 回答