你的宿主系统应该含有下列软件,并且不低于指出的版本。 这对于现在的大多数Linux发布版都不是问题。 也要注意到, 很多发布版会把软件的头文件放在单独的包里, 经常命名为 “<package-name>-devel” 或 “<package-name>-dev”的样子。 如果你用的发布版提供了它们,一定要安装。
Bash-2.05a (/bin/sh 应该是bash的一个符号链接或硬链接)
Binutils-2.12 (不推荐使用高于 2.20 版的,因为没经过测试)
Bison-1.875 (/usr/bin/yacc 应该是 bison的一个连接或是执行bison的一个小脚本)
Bzip2-1.0.2
Coreutils-5.0 (or Sh-Utils-2.0, Textutils-2.0, and Fileutils-4.1)
Diffutils-2.8
Findutils-4.1.20
Gawk-3.0 (/usr/bin/awk 是 gawk的链接)
Gcc-3.0.1 (不推荐使用高于 4.4.3版的,因为没进行测试)
Glibc-2.2.5 (不推荐使用高于2.11.1版的,因为没进行测试)
Grep-2.5
Gzip-1.2.4
Linux Kernel-2.6.18 (使用 GCC-3.0或更高版进行了编译)
要求内核版本的原因是第六章创建glibc时开发者推荐的。如果需要的话,你可以改变它,但至少需要一个 2.6.0 版的内核,因为如果宿主系统不是用3.0或更高版的GCC编译的至少2.6.0 版的 内核, Binutils 中的局部线程存储将无法创建,并且在本地POSIX线程库(NPTL) 的测试组件会报段错误。
如果宿主内核低于2.6.18版或者它不是用GCC-3.0(或以上)版本编译的,你需要重新安置一个符合要求的内核。有两种方法可以解决这个问题。 首先,看你的Linux提供商是否提供了2.6.18版或更新的内核补丁, 如果是,你可能愿意安装它。 如果商家没有提供合适的补丁,或者你不想安装它, 你可以自己编译一个。 关于内核编译和配置引导加载程序(假设主机用的是GRUB)的介绍放在 Chapter 8.
M4-1.4
Make-3.79.1
Patch-2.5.4
Perl-5.6.0
Sed-3.0.2
Tar-1.14
Texinfo-4.8
注意,上面提到的构建LFS系统要用到的符号链接的介绍包含在本书中。指向其他软件 (如dash、mawk等)的符号链接可以运行,但是没有被LFS开发团队所测试和支持, 可能会偏离本指南或者需要为某些软件包打补丁。
要查看你的宿主系统是否包含所有的版本适当,有编译程序能力的软件,请运行以下脚本:
cat > version-check.sh << "EOF"
#!/bin/bash
export LC_ALL=C
# Simple script to list version numbers of critical development tools
bash --version | head -n1 | cut -d" " -f2-4
echo "/bin/sh -> `readlink -f /bin/sh`"
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -e /usr/bin/yacc ];
then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
else echo "yacc not found"; fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -e /usr/bin/awk ];
then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
else echo "awk not found"; fi
gcc --version | head -n1
/lib/libc.so.6 | head -n1 | cut -d"," -f1
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
sed --version | head -n1
tar --version | head -n1
echo "Texinfo: `makeinfo --version | head -n1`"
echo 'main(){}' > dummy.c && gcc -o dummy dummy.c
if [ -x dummy ]; then echo "Compilation OK";
else echo "Compilation failed"; fi
rm -f dummy.c dummy
EOF
bash version-check.sh