我一直在学习使用 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
我一直在学习使用 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
-lfl
在末尾而不是开头添加。
使用gcc lex.yy.c -ll
. 否则它将产生一个未定义的引用yywrap
。
或者,如果您不想使用该库,只需#define yywrap()
.l 文件中的 1,或提供yywrap()
返回 1 的方法。
它已记录在案。
我的解决方案是:
sudo apt-get install flex
我创建了一个文件 addon.c
int yywrap (void )
{
return 1;
}
并将其添加到目标中。