8.16. Tcl-8.6.15

Tcl 软件包包含工具命令语言,它是一个可靠的通用脚本语言。Expect 软件包是用 Tcl (读作“tickle”) 编写的。

估计构建时间: 3.2 SBU
需要硬盘空间: 91 MB

8.16.1. 安装 Tcl

为了支持 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

8.16.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 端桩库