我一直在学习使用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
答案 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;
}
并将其添加到目标。