iv. 对宿主系统的要求

最后更新于:2022-04-01 22:46:38

# iv. 对宿主系统的要求 你的宿主系统应当安装了下列软件,并且不低于指定的版本号。这些要求对于大部分现在的 Linux 发行版来说不成问题。另外要注意的是许多发行版会将软件的头文件额外单独打包存放,常见的名称为"<包名称>-devel"或"<包名称>-dev"。如果你的发行版提供了这些包请务必确保已经安装了它们。 * **Bash-2.05a** * **Binutils-2.12** (不推荐使用大于 2.16.1 的版本,因为尚未经过测试) * **Bzip2-1.0.2** * **Coreutils-5.0** (或者 Sh-Utils-2.0, Textutils-2.0, 和 Fileutils-4.1) * **Diffutils-2.8** * **Findutils-4.1.20** * **Gawk-3.0** * **Gcc-2.95.3** (不推荐使用大于 4.0.3 的版本,因为尚未经过测试) * **Glibc-2.2.5** (不推荐使用大于 2.3.6 的版本,因为尚未经过测试) * **Grep-2.5** * **Gzip-1.2.4** * **Linux Kernel-2.6.x** (必须是 GCC-3.0 以上版本编译的) 对内核版本的这两个要求是因为:如果宿主系统的内核版本低于 2.6.2 或者不是用 GCC-3.0 以上版本编译的,那么 Binutils 将不能支持线程本地存储(thread-local storage),同时 NPTL(本地 POSIX 线程库)的测试程序也会出现段错误。 如果宿主系统的内核版本低于 2.6.2 或者不是用 GCC-3.0 以上版本编译的,您需要安装一个符合上述条件的新内核,然后用该新内核启动宿主系统。有两种方法可以解决这个问题。第一,如果你的 Linux 供应商提供这样的内核,你可以直接安装它;第二,如果你的 Linux 供应商不提供这样的内核或者你不想安装他们提供的内核,你可以自己编译一个内核。关于编译内核和配置引导管理器(假定宿主系统使用 GRUB)的指导,请查看[第八章](../chapter08/chapter08.html)。 * **Make-3.79.1** * **Patch-2.5.4** * **Sed-3.0.2** * **Tar-1.14** 为了确定宿主系统是否满足上述要求,运行下面的命令进行查看: ``` cat > version-check.sh << "EOF" #!/bin/bash # Simple script to list version numbers of critical development tools bash --version | head -n1 | cut -d" " -f2-4 echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-4 bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-8 echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2 diff --version | head -n1 find --version | head -n1 gawk --version | head -n1 gcc --version | head -n1 /lib/libc.so.6 | head -n1 | cut -d" " -f1-7 grep --version | head -n1 gzip --version | head -n1 cat /proc/version | head -n1 | cut -d" " -f1-3,5-7 make --version | head -n1 patch --version | head -n1 sed --version | head -n1 tar --version | head -n1 EOF bash version-check.sh ```
';