gcc 与 lex 配合良好,但在硬盘上找不到 libl.so
gcc works well with lex, but cannot find a libl.so on hard disk
我可以像下面这样使用 lex:
lex my.l && gcc lex.yy.c -ll
没问题,它有效。从 gcc link 选项,我猜有一个名为 libl.so 的库表示 lex 运行时库。
cd /
find ./ -name "libl.so"
但是我没有找到任何结果。那么真的有一个叫做libl.so的库吗? gcc 使用 lex link 的真实库名称是什么?
谢谢!
这取决于您安装 (f)lex 的方式;该库可能是一个存档而不是共享对象(即 libl.a
)。 Flex 通常还提供 libfl.a
和 libfl.so
如果您有 debian 或 ubuntu 系统,(f)lex 库位于 libfl-dev
包中,其中(在 x86_64 平台上)包括以下库:
/usr/lib/x86_64-linux-gnu/libfl.a
/usr/lib/x86_64-linux-gnu/libfl_pic.a
/usr/lib/x86_64-linux-gnu/libfl.so
/usr/lib/x86_64-linux-gnu/libl.a
以及其他一些文件。
对于 RHEL 或 Centos,您需要安装 flex-devel 以获得 libfl.a 和 libl.a 以及安装 bison-devel 以获得 liby.a.
我可以像下面这样使用 lex:
lex my.l && gcc lex.yy.c -ll
没问题,它有效。从 gcc link 选项,我猜有一个名为 libl.so 的库表示 lex 运行时库。
cd /
find ./ -name "libl.so"
但是我没有找到任何结果。那么真的有一个叫做libl.so的库吗? gcc 使用 lex link 的真实库名称是什么?
谢谢!
这取决于您安装 (f)lex 的方式;该库可能是一个存档而不是共享对象(即 libl.a
)。 Flex 通常还提供 libfl.a
和 libfl.so
如果您有 debian 或 ubuntu 系统,(f)lex 库位于 libfl-dev
包中,其中(在 x86_64 平台上)包括以下库:
/usr/lib/x86_64-linux-gnu/libfl.a
/usr/lib/x86_64-linux-gnu/libfl_pic.a
/usr/lib/x86_64-linux-gnu/libfl.so
/usr/lib/x86_64-linux-gnu/libl.a
以及其他一些文件。
对于 RHEL 或 Centos,您需要安装 flex-devel 以获得 libfl.a 和 libl.a 以及安装 bison-devel 以获得 liby.a.