【问题标题】:"<FlexLexer.h> not found", only happens in C++ mode“<FlexLexer.h> 未找到”,仅在 C++ 模式下发生
【发布时间】:2016-09-19 15:24:22
【问题描述】:

在我开始将它用于实际项目之前,我正在测试和玩一些 flex,但我面临着一些问题。

我正在使用名为 Termux 的 Linux 模拟器开发 Android。我已经安装了 flex 和 clang 分别执行 $ apt install flex$ apt install clang

我注意到,如果我为 C 编写 flex 代码,用$ flex filename 处理它,然后用$ gcc -lfl lex.yy.c 编译它,一切都会编译并且二进制文件可以完美运行。

但是,如果我为 C++ 编写弹性代码(即仅使用 C++ 功能),使用$ flex -+ filename 处理它并使用$ g++ -lfl lex.yy.cc 编译它,在编译期间会弹出一个错误,指出文件FlexLexer.h,包含为

#include <FlexLexer.h>

没有找到。

为什么只有在使用 C++ 时才会出现这种情况?由于我实际上需要它用于 C++,我该如何解决这个问题,介意我正在使用模拟器在 Android 上工作?

【问题讨论】:

  • FlexLexer.h 在哪里?哪个目录??
  • @Techidiot 我真的不知道。正如我所说,我使用$ apt install flex 安装它,因此它可能位于我通常无法访问的目录中,例如/data
  • 您应该始终将-l 选项放在 引用库的文件之后:gcc lex.yy.c -lflg++ lex.yy.cc -lfl。我建议也始终使用-Wall,并使用-o executable-name 指定显式输出文件,而不是将可执行文件放入a.out

标签: android c++ flex-lexer file-not-found


【解决方案1】:

在 Debian/Ubuntu 的某些版本(例如 Ubuntu 18.04 “Bionic”)上,您可能需要安装 fl-dev 软件包以获取 FlexLexer.h 头文件。您可以随时使用 https://packages.ubuntu.com/ 的搜索工具查看哪个包提供了文件

sudo apt install libfl-dev

【讨论】:

    【解决方案2】:

    这是 Termux 中 flex 包中的一个错误,现已修复 - 运行 apt update &amp;&amp; apt upgrade 以获取包含 FlexLexer.h 的更新包。

    【讨论】:

    • 我从没想过真正的创作者会回答我的问题。非常感谢!为什么还是没有termux 标签?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    相关资源
    最近更新 更多