FLEX无法构建lex.yy.c

时间:2014-01-19 23:06:25

标签: c++ c macos gcc flex-lexer

  • 已下载flex-2.5.37.tar.gz
  • 解压缩并按照 INSTALL 的说明进行操作:./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”)。

    似乎我无法编译这个该死的文件。它如何知道在哪里找到必要的库?不应该从这里链接工作(这个当前文件夹)?

    我无法得到最简单的例子,这有点令人沮丧。

  • 1 个答案:

    答案 0 :(得分:1)

    好的。所以事实证明我错过了一个名为%option noyywrap的参数,它在这里:

    %{
    int a = 0, b = 0;
    %}
    
    %option noyywrap
    
    %%
    \n   ++a; ++b;
    .    ++b;
    ...
    

    显然,这告诉FLEX只有一个源文件。因此,这不是gcc问题,而是FLEX配置问题。

    感谢大家抽出时间阅读问题。希望这有助于其他任何人。