估计编译时间: 1 SBU 估计所需硬盘空间: 24 MB |
在你要安装Bash之前,你必须先确定你拥有/usr/lib/libcurses.a和/usr/lib/libncurses.a两个文件。如果你的主系统是LFS系统,那么在安装正确的情况下,所有文件都会存在。
如果两个文件都没有,你就要安装Ncurses开发包。这个包通常被称为ncurses-dev或ncurses-static 。如果已经安装了这个包,或你刚安装了它,那么再检查一下这两个文件。通常仍没有libcurses.a 。如果是这样,就创建一个libcurses.a的符号链接,以root身份运行下面这一个命令:
ln -s libncurses.a /usr/lib/libcurses.a |
现在我们可以继续了。用下面的命令安装Bash:
./configure --enable-static-link \ --prefix=$LFS/static --with-curses && make && make install |
如果make install阶段以下面这样结束:
install-info: unknown option `--dir-file=/mnt/lfs/usr/info/dir' usage: install-info [--version] [--help] [--debug] [--maxwidth=nnn] [--section regexp title] [--infodir=xxx] [--align=nnn] [--calign=nnn] [--quiet] [--menuentry=xxx] [--info-dir=xxx] [--keep-old] [--description=xxx] [--test] [--remove] [--] filename make[1]: *** [install] Error 1 make[1]: Leaving directory `/mnt/lfs/usr/src/bash-2.05a/doc' make: [install] Error 2 (ignored)
这意味着你可能正在使用Debian-2.2 (potato), 并且你的texinfo包版本太老了。这个错误无关大局,我们在第六章中动态编译bash的时候会把info页安装上去,所以你可以放心地忽略它。据反馈,在当前版本的Debian (3.0;又叫 Woody)中没有这样的错误。
--enable-static-link: 这个配置命令使bash被静态链接。
--prefix=$LFS/static:这个配置命令把Bash的所有文件安装到$LFS/static目录下,这个目录在chroot环境下或在最终的LFS系统中将成为 /static 目录。
--with-curses: 这使bash链接到 curses库而不是缺省的 termcap 库,那个库已经废弃了(obsolete)。
其实静态链接的bash并不一定要链接到libncurses (也可以暂时链接到静态的termcap ,因为我们在第六章中要重新安装bash,那个时候链接到libncurses就行了),不过这样可以测试Ncurses包是否正确安装了。如果没有,在本章稍后安装Texinfo包时就会有问题。它要求用ncurses,并且termcap不能可靠地用在那里。
每行最后的&&用处很大,它使后一个命令仅在前一个命令返回值为0(表示正确执行)的情况下才执行。在所有的命令都是拷贝 &粘贴的情况下,我们必须保证如果./configure出错,make就不执行,同样地,如果 make 出错,make install就不执行,诸如此类。
最后检查于 version 2.05a.
Bash: bash, sh
Binutils: ar, as, ld, ranlib, size
Diffutils: cmp
Fileutils: chmod, cp, install, ln, ls, mkdir, mv, rm
Gcc: cc, cc1, collect2, cpp0, gcc
Grep: egrep, grep
Make: make
Gawk: awk
Sed: sed
Sh-utils: basename, echo, expr, hostname, sleep, uname
Texinfo: install-info
Textutils: cat, tr, uniq