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
```
';