Files
android_kernel_toolchain/setup.sh
T

64 lines
2.1 KiB
Bash
Raw Normal View History

#!/bin/bash
# setup.sh - 解压构建工具链到内核仓库
#
# 用法:
# ./setup.sh <内核仓库路径>
#
# 例:
# git clone <toolchain-repo>
# cd <toolchain-repo>
# ./setup.sh ~/android_kernel_eebbk_sm6150
#
# 效果: 工具链解压到 <内核仓库路径>/../toolchain/ (与内核仓库同级)
# <parent>/
# ├── android_kernel_eebbk_sm6150/ <- 内核仓库
# └── toolchain/
# ├── android_prebuilts_clang_host_linux-x86_clang-6443078-10.0/
# └── binutils-2.27-install/
set -e
if [ $# -lt 1 ]; then
echo "用法: ./setup.sh <内核仓库路径>"
echo "例: ./setup.sh ~/android_kernel_eebbk_sm6150"
exit 1
fi
KERNEL_DIR="$(cd "$1" && pwd)"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TOOLCHAIN_DIR="$(dirname "$KERNEL_DIR")/toolchain"
if [ ! -d "$KERNEL_DIR/Makefile" ] && [ ! -f "$KERNEL_DIR/Makefile" ]; then
echo "错误: $KERNEL_DIR 看起来不是内核源码目录 (没有 Makefile)"
exit 1
fi
echo "=== 内核仓库: $KERNEL_DIR ==="
echo "=== 工具链安装到: $TOOLCHAIN_DIR ==="
mkdir -p "$TOOLCHAIN_DIR"
echo "=== 解压 binutils-2.27 (39MB) ==="
tar -xzf "$SCRIPT_DIR/binutils-2.27-install.tar.gz" -C "$TOOLCHAIN_DIR"
echo "完成"
echo "=== 解压 clang-11.0.1 (342MB, 请稍候) ==="
tar -xzf "$SCRIPT_DIR/clang-6443078.tar.gz" -C "$TOOLCHAIN_DIR"
echo "完成"
echo ""
echo "=== 工具链就绪 ==="
ls -d "$TOOLCHAIN_DIR"/android_prebuilts_clang_host_linux-x86_clang-6443078-10.0
ls -d "$TOOLCHAIN_DIR"/binutils-2.27-install
echo ""
echo "编译内核:"
echo " cd $KERNEL_DIR"
echo " export TC=$TOOLCHAIN_DIR"
echo " export ARCH=arm64"
echo " export CROSS_COMPILE=\$TC/binutils-2.27-install/bin/aarch64-linux-gnu-"
echo " export CLANG=\$TC/android_prebuilts_clang_host_linux-x86_clang-6443078-10.0"
echo " export PATH=\$CLANG/bin:\$PATH"
echo " export LOCALVERSION=-perf"
echo " make vendor/sdmsteppe-perf_defconfig"
echo " make -j\$(nproc) CC=\"python3 ./scripts/gcc-wrapper.py \$CLANG/bin/aarch64-linux-gnu-clang\" HOSTCC=gcc HOSTCXX=g++"
echo " gzip -n -9 -c arch/arm64/boot/Image > Image.gz"