【发布时间】:2016-01-18 19:59:01
【问题描述】:
我正在尝试从this question 编译最小示例。
我不断收到与未定义的 yywrap() 引用相关的错误。 manual 建议:
- 定义我自己的
yywrap()函数,或者 - 使用
noyywrap选项,或 - 链接到
libfl.so
就我而言,链接到libfl 失败。其他两个选项会产生成功的编译。
有问题的代码:
test.ll
%option c++
%%
%%
test.c
int main()
{
return 42;
}
编译这些文件:
flex test.ll
g++ -c lex.yy.cc
g++ -o test test.c lex.yy.o -lfl
然后,在运行./test 之后,echo $? 应该返回 42。
就我而言,编译的最后一步失败了,我得到:
lex.yy.o:(.rodata._ZTV11yyFlexLexer[_ZTV11yyFlexLexer]+0x68): undefined reference to `yyFlexLexer::yywrap()'
/usr/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../lib/libfl.so: undefined reference to `yylex'
【问题讨论】:
标签: c++ linker flex-lexer