#!/usr/bin/env bash # phase5_tools.sh # LFS 12.2 阶段5 临时工具链全自动化 set -euo pipefail IFS=$'\n\t' LFS_WORKDIR="$PWD/lfs_build" CPU_CORES="$(nproc)" LFS_SRC="$LFS_WORKDIR/sources" LFS_BUILD="$LFS_WORKDIR/build" info(){ echo -e "\e[34m[INFO]\e[0m $*"; } cd "$LFS_BUILD" # 阶段5官方包顺序 PACKAGES=( "binutils" "gcc" "glibc" "libstdc++" "bash" "coreutils" "diffutils" "file" "findutils" "gawk" "grep" "gzip" "make" "patch" "sed" "tar" "xz" ) # 自动解压、编译、安装 for pkg in "${PACKAGES[@]}"; do info "处理阶段5包: $pkg" src=$(ls "$LFS_SRC" | grep "$pkg") [ -f "$src" ] || { echo "源码 $pkg 未找到"; exit 1; } rm -rf "$pkg-build" mkdir "$pkg-build" tar xf "$LFS_SRC/$src" -C "$pkg-build" --strip-components=1 cd "$pkg-build" # 自动 patch for patchf in "$LFS_SRC"/*.patch; do patch -Np1 < "$patchf" 2>/dev/null || true done # 编译安装 ./configure --prefix=/tools --disable-multilib || true make -j"$CPU_CORES" make install cd "$LFS_BUILD" rm -rf "$pkg-build" done info "阶段5 临时工具链构建完成"