63 lines
1.1 KiB
Bash
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 临时工具链构建完成"
|
|
|