Expect 软件包包含一个通过执行脚本对话框与其它交互式程序通信的工具。
先修正一个可能导致 GCC 测试程序假失败的 bug :
patch -Np1 -i ../expect-5.43.0-spawn-1.patch
接着,再修复一个bug ,这是最近Tcl改变造成的:
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
现在准备编译 Expect :
./configure --prefix=/tools --with-tcl=/tools/lib \ --with-tclinclude=/tools/include --with-x=no
配置选项的含义:
--with-tcl=/tools/lib
这个选项确保配置脚本找到的是安装在临时工具目录下的 Tcl ,而不是宿主系统里的。
--with-tclinclude=/tools/include
这个选项告诉 Expect 到哪里寻找 Tcl 的内部头文件。使用这个选项可以避免 configure 脚本因为找不到 Tcl 的源代码目录而导致的失败。
--with-x=no
这个选项告诉 configure 脚本不要搜索 Tk(Tcl的图形界面组件)或者 X Window 系统的库,这两者都可能位于宿主系统上,而不在临时环境中。
编译这个软件包:
make
现在编译完成了。和前面讨论的一样,在本章,因为是临时工具,我们不强制您运行测试组件。 如 果一定要运行Expect 测试系统, 可执行下面的命令:
make test
请注意, 已知 Expect 的测试程序会在某些不在我们控制范围内的宿主系统下出现测试失败。 因此, 如果您运行这里的测试程序失败了也没关系,因为这并不关键。
安装这个软件包:
make SCRIPTS="" install
make 参数的含义:
SCRIPTS=""
这个选项防止安装 Expect 所补充的一些并不需要的脚本。