问题描述
我的编译器设计课程需要使用 Lex,但如何在 Cygwin 环境中安装和使用它?
解决方法
安装 Cygwin 软件包的正确方法是 Cygwin setup
。
https://cygwin.com/cygwin-ug-net/setup-net.html
apt-cyg
不受支持、不维护且容易出错。
关于 Lex,您可以使用 cygcheck
$ cygcheck -p bin/lex
Found 5 matches for bin/lex
flex-2.6.4-2 - flex: A fast lexical analyzer generator
...
所以你需要安装 flex
包。有了它:
$ cygcheck -l flex |grep bin
/usr/bin/flex++
/usr/bin/flex.exe
/usr/bin/lex
作为附加信息,C 编译器的最新版本是 10.2.0-1
$ cygcheck -p usr/bin/gcc
Found 10 matches for usr/bin/gcc
gcc-core-10.2.0-1 - gcc-core: GNU Compiler Collection (C,OpenMP)
gcc-core-7.4.0-1 - gcc-core: GNU Compiler Collection (C,OpenMP)
gcc-core-9.3.0-1 - gcc-core: GNU Compiler Collection (C,OpenMP)
gcc-core-9.3.0-2 - gcc-core: GNU Compiler Collection (C,OpenMP)
...
,
首先从 here 安装 apt-cyg
软件包管理器。那么
apt-cyg install flex m4
创建一个 Lex 文件,比如 sample.l
。那么,
lex sample.l
输出将写入 lex.yy.c
。您可以在上一个命令中使用 -o
标志更改此目标。然后,使用
gcc lex.yy.c -lfl
fl
与仅 l
相反,是链接器参数。默认情况下,生成的可执行文件应为 a.exe
。
如果您没有 gcc
,请使用
apt-cyg install gcc-core