5.9. Expect-5.43.0

Expect 软件包包含一个通过执行脚本对话框与其它交互式程序通信的工具。

5.9.1. 安装 Expect

先修正一个可能导致 GCC 测试程序假失败的 bug :patch -Np1 -i ../expect-5.43.0-spawn-1.patch

为编译 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

要测试结果,请运行:make test 。请注意,已知 Expect 的测试程序会在某些不在我们控制范围内的宿主系统下出现测试失败。因此,如果您运行这里的测试程序失败了也没关系,因为这并不关键。

安装软件包:make SCRIPTS="" install

make 参数的含义:

SCRIPTS="" 这个选项防止安装 Expect 所补充的一些并不需要的脚本。

5.9.2. Expect 的内容

  • 安装的程序:expect
  • 安装的库:libexpect-5.43.a

简要描述

expect 按照一个脚本与其它交互式程序通信
libexpect-5.43.a 包含的函数可以让 Expect 作为 Tcl 的扩展来使用,或者直接被 C 或 C++ 使用(不需要 Tcl)
下一节:为什么要读这本书呢?有许多原因,最主要的原因是可以学习如何直接从源代码安装一个 linux 系统。许多人也许会问:"当你可以下载和安装一个现成的 linux 系统时,为什么要如此麻烦地从源代码开始手动构建一个 linux 系统呢?"这是一个好问题,也是本书存在本节的原因。