8.15. Tcl-8.6.11

Tcl 软件包包含工具命令语言,它是一个可靠的通用脚本语言。Except 软件包是用 Tcl 语言编写的.

估计构建时间: 3.8 SBU
需要硬盘空间: 80 MB

8.15.1. 安装 Tcl

为了支持 Binutils 和 GCC 等软件包测试套件的运行,需要安装这个软件包和接下来的两个 (Expect 与 DejaGNU)。为了测试目的安装三个软件包看似浪费,但是只有运行了测试,才能放心地确定多数重要工具可以正常工作,即使测试不是必要的。我们必须安装这些软件包,才能执行本章中的测试套件。

首先,运行以下命令解压文档:

tar -xf ../tcl8.6.11-html.tar.gz --strip-components=1

准备编译 Tcl:

SRCDIR=$(pwd)
cd unix
./configure --prefix=/usr           \
            --mandir=/usr/share/man \
            $([ "$(uname -m)" = x86_64 ] && echo --enable-64bit)

配置选项的含义:

$([ "$(uname -m)" = x86_64 ] && echo --enable-64bit)

$(<shell 命令>) 会被 shell 替换为 shell 命令的输出。这里,如果在 32 位机器上,输出是空的,而如果在 64 位机器上,输出是 --enable-64bit

构建该软件包:

make

sed -e "s|$SRCDIR/unix|/usr/lib|" \
    -e "s|$SRCDIR|/usr/include|"  \
    -i tclConfig.sh

sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.2|/usr/lib/tdbc1.1.2|" \
    -e "s|$SRCDIR/pkgs/tdbc1.1.2/generic|/usr/include|"    \
    -e "s|$SRCDIR/pkgs/tdbc1.1.2/library|/usr/lib/tcl8.6|" \
    -e "s|$SRCDIR/pkgs/tdbc1.1.2|/usr/include|"            \
    -i pkgs/tdbc1.1.2/tdbcConfig.sh

sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.1|/usr/lib/itcl4.2.1|" \
    -e "s|$SRCDIR/pkgs/itcl4.2.1/generic|/usr/include|"    \
    -e "s|$SRCDIR/pkgs/itcl4.2.1|/usr/include|"            \
    -i pkgs/itcl4.2.1/itclConfig.sh

unset SRCDIR

make命令之后的若干sed命令从配置文件中删除构建目录,并用安装目录替换它们。构建 LFS 的后续过程不对此严格要求,但如果之后构建使用 Tcl 的软件包,则可能需要这样的操作。

运行以下命令,以测试编译结果:

make test
[注意]

注意

在测试结果中,一些与 clock.test 相关的输出会显示测试失败,但是最终给出的测试结果摘要显示没有发生测试失败。clock 测试在完整的 LFS 系统上正常通过。

安装该软件包:

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 man 页面文件名冲突的 man 页面:

mv /usr/share/man/man3/{Thread,Tcl_Thread}.3

8.15.2. Tcl 的内容

安装的程序: tclsh (到 tclsh8.6 的链接) 和 tclsh8.6
安装的库: libtcl8.6.so 和 libtclstub8.6.a

简要描述

tclsh8.6

Tcl 命令行 shell

tclsh

一个指向 tclsh8.6 的链接

libtcl8.6.so

Tcl 运行库

libtclstub8.6.a

Tcl 端桩库