Expect 提供了一个与其他交互式程序提供脚本接口的工具。
首先修正一个导致运行 GCC 测试程序失败的 bug:
patch -Np1 -i ../expect-5.43.0-spawn-1.patch
接着修正由于近期 Tcl 更新产生的 bug:
patch -Np1 -i ../expect-5.43.0-tcl_8.5.5_fix-1.patch
接下来,强制 Expect 配置脚本使用 /bin/stty
,而不是使用可能在宿主系统中的 /usr/local/bin/stty
。这保证我们的测试套件对于最终构造的工具链仍然稳健。
cp -v configure{,.orig} sed 's:/usr/local/bin:/bin:' configure.orig > configure
现在可以准备编译:
./configure --prefix=/tools --with-tcl=/tools/lib \ --with-tclinclude=/tools/include --with-x=no
配置选项的含义:
--with-tcl=/tools/lib
这能确保配置脚本能找到临时系统目录下安装的 Tcl,而不是宿主系统可能安装的。
--with-tclinclude=/tools/include
这明确指出了 Tcl 内部头文件的位置。这能防止由于 configure 不能自动寻找到 Tcl 内部头文件导致的配置失败。
--with-x=no
告诉配置脚本不去搜索 Tk (Tcl 的图形界面组件)或 X Window 系统库,两者可能存在于宿主系统,但在临时环境中不存在。
编译它:
make
编译完成之后,如前所述,在本章为了一个临时工具运行测试程序不是强制的。如果要测试 Expect,运行下面命令:
make test
请注意,已知 Expect 的测试程序会在某些不在我们控制范围内的宿主系统下出现测试失败。因此,测试失败也并不奇怪,这不是关键所在。
安装软件包:
make SCRIPTS="" install
配置选项的含义:
SCRIPTS=""
这个选项防止安装 Expect 补充的一些并不需要的脚本。