“<FlexLexer.h> 未找到”,仅在 C++ 模式下发生

"<FlexLexer.h> not found", only happens in C++ mode

在开始将 flex 用于实际项目之前,我正在测试和使用它,但我遇到了一些问题。

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

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

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

#include <FlexLexer.h>

未找到。

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

这是 Termux 中 flex 包中的一个错误,现已修复 - 运行 apt update && apt upgrade 以获得包含 FlexLexer.h.[= 的更新包13=]

在 Debian/Ubuntu 的某些版本(例如 Ubuntu 18.04 “Bionic”)上,您可能需要安装 fl-dev 包以获取 FlexLexer.h 头文件。您始终可以使用位于 https://packages.ubuntu.com/

的搜索工具检查哪个包提供了文件

sudo apt install libfl-dev