./configure
+ make
+ make install
example.l
,其中包含:
%{
int a = 0, b = 0;
%}
%%
\n ++a; ++b;
. ++b;
%%
int main()
{
yylex();
printf("%d - %d", a, b);
}
这是他们网站的基本示例。计算文件中的行和字符。
flex example.l
。它生成了lex.yy.c
gcc lex.yy.c -o lexyy
:为架构x86_64 抛出未定义的符号
- gcc lex.yy.c -lfl
: ld:找不到-lfl的库 gcc lex.yy.c -ll
:生成 a.out ,但是当我针对文件运行它时,它不起作用(打印“0 - 0”)。
似乎我无法编译这个该死的文件。它如何知道在哪里找到必要的库?不应该从这里链接工作(这个当前文件夹)?
我无法得到最简单的例子,这有点令人沮丧。
答案 0 :(得分:1)
好的。所以事实证明我错过了一个名为%option noyywrap
的参数,它在这里:
%{
int a = 0, b = 0;
%}
%option noyywrap
%%
\n ++a; ++b;
. ++b;
...
显然,这告诉FLEX只有一个源文件。因此,这不是gcc
问题,而是FLEX配置问题。
感谢大家抽出时间阅读问题。希望这有助于其他任何人。