Tcl 软件包包含工具命令语言,它是一个可靠的通用脚本语言。Expect 软件包是用 Tcl (读作“tickle”) 编写的。
为了支持 Binutils,GCC,以及其他一些软件包测试套件的运行,需要安装这个软件包和接下来的两个 (Expect 与 DejaGNU)。为了测试目的安装三个软件包看似浪费,但是只有运行了测试,才能放心地确定多数重要工具可以正常工作,即使测试不是必要的。我们必须安装这些软件包,才能执行本章中的测试套件。
准备编译 Tcl:
SRCDIR=$(pwd) cd unix ./configure --prefix=/usr \ --mandir=/usr/share/man \ --disable-rpath
新的配置选项的含义:
--disable-rpath
该选项阻止在二进制可执行文件和共享库中硬编码库文件搜索路径 (rpath)。该软件包在安装到标准位置时并不需要 rpath,而且 rpath 在一些情况下会产生我们不希望的副作用,甚至导致安全问题。
构建该软件包:
make sed -e "s|$SRCDIR/unix|/usr/lib|" \ -e "s|$SRCDIR|/usr/include|" \ -i tclConfig.sh sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.9|/usr/lib/tdbc1.1.9|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.9/generic|/usr/include|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.9/library|/usr/lib/tcl8.6|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.9|/usr/include|" \ -i pkgs/tdbc1.1.9/tdbcConfig.sh sed -e "s|$SRCDIR/unix/pkgs/itcl4.3.0|/usr/lib/itcl4.3.0|" \ -e "s|$SRCDIR/pkgs/itcl4.3.0/generic|/usr/include|" \ -e "s|$SRCDIR/pkgs/itcl4.3.0|/usr/include|" \ -i pkgs/itcl4.3.0/itclConfig.sh unset SRCDIR
“make”命令之后的若干“sed”命令从配置文件中删除构建目录,并用安装目录替换它们。构建 LFS 的后续过程不对此严格要求,但如果之后构建使用 Tcl 的软件包,则可能需要这样的操作。
运行命令以测试编译结果:
make test
安装该软件包:
make install
将安装好的库加上写入权限,以便将来移除调试符号:
chmod -v u+w /usr/lib/libtcl8.6.so
安装 Tcl 的头文件。下一个软件包 Expect 需要它们才能构建。
make install-private-headers
创建一个必要的符号链接:
ln -sfv tclsh8.6 /usr/bin/tclsh
重命名一个与 Perl 手册页文件名冲突的手册页:
mv /usr/share/man/man3/{Thread,Tcl_Thread}.3
如果需要,可以运行以下命令安装文档:
cd .. tar -xf ../tcl8.6.15-html.tar.gz --strip-components=1 mkdir -v -p /usr/share/doc/tcl-8.6.15 cp -v -r ./html/* /usr/share/doc/tcl-8.6.15