下载 flex-2.5.37.tar.gz
解压缩并按照安装的说明进行操作:
在一个新的文件夹中,我编写了一个文件
在终端上,我跑
之后:
-
-
./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的未定义符号<</i>br/>- gcc lex.yy.c -lfl
: LD:找不到 -lfl 的库-
gcc lex.yy.c -ll
:生成 a.out,但是当我对文件运行它时,它不起作用(打印"0 - 0")。似乎我无法编译这个该死的文件。它如何知道在哪里可以找到必要的库?链接不应该从这里(这个当前文件夹)开始工作吗?
有点令人沮丧的是,我无法获得最简单的示例。
好吧。所以事实证明我缺少一个名为 %option noyywrap
的参数,它在这里:
%{
int a = 0, b = 0;
%}
%option noyywrap
%%
n ++a; ++b;
. ++b;
...
显然,这告诉FLEX只有一个源文件。所以这不是一个gcc
问题,这是一个FLEX配置问题。
感谢大家抽出宝贵时间阅读这个问题。希望这对其他人有所帮助。