“<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
在开始将 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