mylfs/phase5_tools.sh
2025-10-20 10:02:23 +01:00

63 lines
1.1 KiB
Bash

#!/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 临时工具链构建完成"