flex:仅在单独编译/链接时对`yywrap'的未定义引用

时间:2012-12-26 15:54:40

标签: c flex-lexer

我一直在学习使用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

5 个答案:

答案 0 :(得分:19)

在结尾添加-lfl而非开头。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

记录在案。

答案 3 :(得分:1)

我的解决方案是:

sudo apt-get install flex

答案 4 :(得分:1)

我创建了一个文件addon.c

int yywrap (void )
{
    return 1;
}

并将其添加到目标。