From f5c47cad81aff6fda6405049d6caf6ef72642ac5 Mon Sep 17 00:00:00 2001 From: Dich Date: Mon, 30 Jun 2025 22:29:35 +0800 Subject: [PATCH] fix:path --- .github/workflows/build-gki-kernel.yml | 98 ++++++++------------------ check_packages.py | 42 +++++------ 2 files changed, 51 insertions(+), 89 deletions(-) diff --git a/.github/workflows/build-gki-kernel.yml b/.github/workflows/build-gki-kernel.yml index f1d4c19..7d60d0f 100644 --- a/.github/workflows/build-gki-kernel.yml +++ b/.github/workflows/build-gki-kernel.yml @@ -57,7 +57,7 @@ jobs: zstd rsync ca-certificates wget \ pahole dwarves zip - # 安装更新的GCC以满足内核版本要求 + # 安装GCC以满足内核版本要求 sudo apt-get install -y gcc-9 g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90 @@ -79,12 +79,6 @@ jobs: run: | cd $GITHUB_WORKSPACE/kernel - echo "=== 下载 ARM GCC 工具链 ===" - # 下载ARM GCC工具链 - git clone --depth=1 \ - https://github.com/LineageOS/android_prebuilts_gcc_linux-x86_arm_arm-linux-androideabi-4.9.git \ - ./toolchains/gcc-arm-4.9 - echo "=== 下载 Clang 工具链 ===" # 创建 Clang 目录 mkdir -p ./toolchains/clang-14 @@ -120,42 +114,6 @@ jobs: # 返回 kernel 目录 cd $GITHUB_WORKSPACE/kernel - echo "=== 验证工具链二进制文件 ===" - # 验证关键工具存在 - echo "检查 Clang 二进制文件..." - if [ -f "./toolchains/clang-14/bin/clang" ]; then - echo "✓ clang 存在" - ls -la ./toolchains/clang-14/bin/clang - else - echo "✗ clang 不存在,检查目录结构:" - find ./toolchains/clang-14 -name "clang" -type f 2>/dev/null || echo "未找到 clang 二进制文件" - exit 1 - fi - - echo "检查 aarch64-linux-gnu 工具..." - if ls ./toolchains/clang-14/bin/aarch64-linux-gnu-* 1> /dev/null 2>&1; then - echo "✓ aarch64-linux-gnu 工具存在" - ls -la ./toolchains/clang-14/bin/aarch64-linux-gnu-* | head -3 - else - echo "✗ aarch64-linux-gnu 工具不存在" - fi - - echo "检查 LLVM 工具..." - if ls ./toolchains/clang-14/bin/llvm-* 1> /dev/null 2>&1; then - echo "✓ LLVM 工具存在" - ls -la ./toolchains/clang-14/bin/llvm-* | head -3 - else - echo "✗ LLVM 工具不存在" - fi - - echo "检查 ARM GCC 工具..." - if ls ./toolchains/gcc-arm-4.9/bin/arm-linux-androideabi-* 1> /dev/null 2>&1; then - echo "✓ ARM GCC 工具存在" - ls -la ./toolchains/gcc-arm-4.9/bin/arm-linux-androideabi-* | head -3 - else - echo "✗ ARM GCC 工具不存在" - fi - echo "=== 最终目录结构 ===" echo "kernel/" ls -la ./ @@ -235,8 +193,8 @@ jobs: EOF # Configure compression algorithm - if [ "${{ inputs.zram_algorithm }}" = "zstd" ]; then - cat >> myconfig << EOF + if [ "${{ inputs.zram_algorithm }}" = "zstd" ]; then + cat >> myconfig << EOF CONFIG_CRYPTO_ZSTD=y CONFIG_ZRAM_DEF_COMP="zstd" CONFIG_ZRAM_DEF_COMP_ZSTD=y @@ -293,17 +251,19 @@ jobs: export KCONFIG_CONFIG=$PWD/myconfig # 设置工具链路径变量 - CLANG_PATH=$GITHUB_WORKSPACE/kernel/toolchains/clang-14/bin - GCC_ARM_PATH=$GITHUB_WORKSPACE/kernel/toolchains/gcc-arm-4.9/bin + export CLANG_PATH=$GITHUB_WORKSPACE/kernel/toolchains/clang-14/bin + export PATH=$CLANG_PATH:$PATH + # 验证所有必需的工具 - echo "=== Verifying required tools ===" - $CLANG_PATH/clang --version | head -2 - $CLANG_PATH/aarch64-linux-gnu-gcc --version | head -1 || echo "aarch64-linux-gnu-gcc not found" - $GCC_ARM_PATH/arm-linux-androideabi-gcc --version | head -1 - test -f $CLANG_PATH/ld.lld && echo "ld.lld found" || echo "ld.lld not found" - gcc --version | head -1 - echo "================================" + echo "=== 验证编译器路径 ===" + which clang + clang --version + echo "=== 验证 clang 是否支持 --target ===" + clang --target=aarch64-linux-gnu -v -c /dev/null -o /dev/null || echo "❌ 不支持" + echo "=== 验证 binutils 是否可用 ===" + which llvm-objcopy + which llvm-strip # 清理构建目录 rm -rf out @@ -314,20 +274,22 @@ jobs: # 编译内核 make -j$(nproc) O=out WERROR=0 \ - KCFLAGS="-Wno-error=frame-larger-than= -O3 -pipe" \ - KCPPFLAGS="-DCONFIG_CC_OPTIMIZE_FOR_PERFORMANCE" \ - HOSTCFLAGS="-O3 -pipe" \ - HOSTCXXFLAGS="-O3 -pipe" \ - NM=$CLANG_PATH/llvm-nm \ - OBJCOPY=$CLANG_PATH/llvm-objcopy \ - LD=$CLANG_PATH/ld.lld \ - CROSS_COMPILE=$CLANG_PATH/aarch64-linux-gnu- \ - CROSS_COMPILE_ARM32=$GCC_ARM_PATH/arm-linux-androideabi- \ - CC=$CLANG_PATH/clang \ - AR=$CLANG_PATH/llvm-ar \ - OBJDUMP=$CLANG_PATH/llvm-objdump \ - STRIP=$CLANG_PATH/llvm-strip \ - 2>&1 | tee out/error.log + CC=clang \ + AR=llvm-ar \ + LD=ld.lld \ + NM=llvm-nm \ + OBJCOPY=llvm-objcopy \ + OBJDUMP=llvm-objdump \ + STRIP=llvm-strip \ + HOSTCC=clang \ + HOSTCXX=clang++ \ + CROSS_COMPILE= \ + CROSS_COMPILE_ARM32=arm-linux-androideabi- \ + KCFLAGS="--target=aarch64-linux-gnu -O3 -pipe -Wno-error=frame-larger-than=" \ + KCPPFLAGS="-DCONFIG_CC_OPTIMIZE_FOR_PERFORMANCE" \ + HOSTCFLAGS="-O3 -pipe" \ + HOSTCXXFLAGS="-O3 -pipe" \ + 2>&1 | tee out/error.log # 记录结束时间 endtime=$(date +'%Y-%m-%d %H:%M:%S') diff --git a/check_packages.py b/check_packages.py index cebf8ea..7a8a997 100644 --- a/check_packages.py +++ b/check_packages.py @@ -2,27 +2,27 @@ import subprocess # 要检查和安装的软件包列表 packages = [ - "bc", - "bison", - "build-essential", - "cpio", - "curl", - "flex", - "git", - "libncurses-dev", - "libssl-dev", - "libelf-dev", - "lzop", - "python3", - "unzip", - "xz-utils", - "zstd", - "rsync", - "ca-certificates", - "wget", - "pahole", - "dwarves", - "zip", + "bc", # 任意精度计算器,内核 Makefile 中常用于数学计算 + "bison", # 语法分析器生成工具,用于构建内核或其他复杂项目 + "build-essential", # 包含 gcc/g++/make 等构建 C/C++ 项目的基础工具 + "cpio", # 用于生成 initramfs 等归档格式 + "curl", # 命令行工具,用于通过 URL 下载数据(支持 HTTPS) + "flex", # 词法分析器生成工具,常与 bison 搭配使用 + "git", # 用于克隆源码仓库,如 Linux 内核、AOSP 等 + "libncurses-dev", # 支持终端图形界面,如 `make menuconfig` 内核配置工具 + "libssl-dev", # OpenSSL 的开发库,用于支持加密通信或模块 + "libelf-dev", # 用于处理 ELF 格式的文件,如内核镜像、调试信息等 + "lzop", # 快速压缩工具,用于内核镜像/initramfs 的压缩 + "python3", # Python 解释器,许多构建/打包脚本使用 Python 编写 + "unzip", # 用于解压 .zip 格式压缩包,常用于处理资源或模块 + "xz-utils", # 支持 .xz 格式压缩/解压,常见于内核源码压缩包 + "zstd", # 高效压缩工具,内核支持的现代压缩算法 + "rsync", # 高效文件同步工具,常用于备份或同步构建产物 + "ca-certificates", # 安全证书库,确保 curl/wget 能安全访问 HTTPS 资源 + "wget", # 类似 curl 的命令行下载工具,适合简单文件下载 + "pahole", # 用于生成 BTF/DWARF 信息,优化内核结构体布局(eBPF等) + "dwarves", # 包含 pahole 工具,用于调试和结构体分析 + "zip", # 用于创建 .zip 压缩包,如打包 AnyKernel3 项目等 ]