%general-entities; ]> 宿主系统需求 您的宿主系统必须拥有下列软件,且版本不能低于我们给出的最低版本。 对于大多数现代 Linux 发行版来说这不成问题。要注意的是, 很多发行版会把软件的头文件放在单独的软件包中,这些软件包的名称往往是 <package-name>-devel 或者 <package-name>-dev。 如果您的发行版为下列软件提供了这类软件包,一定要安装它们。 比下列最低版本更古老的版本可能正常工作,但作者没有进行测试。 Bash-3.2 (/bin/sh 必须是到 bash 的符号链接或硬连接) Binutils-2.25 (比 &binutils-version; 更新的版本未经测试,不推荐使用) Bison-2.7 (/usr/bin/yacc 必须是到 bison 的链接,或者是一个执行 bison 的小脚本) Bzip2-1.0.4 Coreutils-6.9 Diffutils-2.8.1 Findutils-4.2.31 Gawk-4.0.1 (/usr/bin/awk 必须是到 gawk 的链接) GCC-4.9 包括 C++ 编译器, g++ (比 &gcc-version; 更新的版本未经测试, 不推荐使用) Glibc-2.11 (比 &glibc-version; 更新的版本未经测试,不推荐使用) Grep-2.5.1a Gzip-1.3.12 Linux Kernel-&min-kernel; 内核版本的要求是为了符合 中编译 glibc 时开发者推荐的配置选项。 udev 也要求一定的内核版本。 如果宿主内核比 &min-kernel; 更早,您需要将内核升级到较新的版本。 升级内核有两种方法,如果您的发行版供应商提供了 &min-kernel; 或更新的内核软件包,您可以直接安装它。 如果供应商没有提供一个足够新的内核包,或者您不想安装它, 您可以自己编译内核。编译内核和配置启动引导器 (假设宿主使用 GRUB) 的步骤在 中。 M4-1.4.10 Make-4.0 Patch-2.5.4 Perl-5.8.8 Sed-4.1.5 Tar-1.22 Texinfo-4.7 Xz-5.0.0 上面要求的符号链接是根据本书构建 LFS 的充分条件,不是必要条件。 链接指向其他软件 (如 dash 或 mawk 等) 可能不会引发问题,但 LFS 开发团队没有尝试过这种做法,也无法提供帮助。对于一些软件包来说, 您可能需要修改本书中的指令或者使用额外的补丁, 才能在这类宿主环境成功构建。 为了确定您的宿主系统拥有每个软件的合适版本,且能够编译程序, 请运行下列脚本。 cat > version-check.sh << "EOF" #!/bin/bash # Simple script to list version numbers of critical development tools export LC_ALL=C bash --version | head -n1 | cut -d" " -f2-4 MYSH=$(readlink -f /bin/sh) echo "/bin/sh -> $MYSH" echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash" unset MYSH echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3- bison --version | head -n1 if [ -h /usr/bin/yacc ]; then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`"; elif [ -x /usr/bin/yacc ]; then echo yacc is `/usr/bin/yacc --version | head -n1` 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 [ -h /usr/bin/awk ]; then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`"; elif [ -x /usr/bin/awk ]; then echo awk is `/usr/bin/awk --version | head -n1` else echo "awk not found" fi gcc --version | head -n1 g++ --version | head -n1 ldd --version | head -n1 | cut -d" " -f2- # glibc version 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 makeinfo --version | head -n1 xz --version | head -n1 echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c if [ -x dummy ] then echo "g++ compilation OK"; else echo "g++ compilation failed"; fi rm -f dummy.c dummy EOF bash version-check.sh