#!/bin/bash #======================================================================= # FILE: scripts/build-arm64.sh # DESC: 交叉编译为 RK3588 (aarch64) / Ubuntu 22.04 二进制,用法同 build.sh。 # 在 arm64 镜像(h100-power-manager-ci:arm64)内跑 cmake + make, # 产物输出到 bin/arm64/,与本地 x86_64 的 bin/、build/ 互不影响。 # # 用法: # ./scripts/build-arm64.sh # # 前置(一次性,构建 arm64 镜像): # CI_TOKEN=xxx ./scripts/build-arm64-image.sh #======================================================================= set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(dirname "${SCRIPT_DIR}")" IMAGE="h100-power-manager-ci:arm64" JOBS="${JOBS:-$(nproc)}" if ! docker image inspect "${IMAGE}" >/dev/null 2>&1; then echo "错误: 本地不存在镜像 ${IMAGE}" >&2 echo " 请先执行: CI_TOKEN=xxx ./scripts/build-arm64-image.sh" >&2 exit 1 fi mkdir -p "${PROJECT_ROOT}/build-arm64" "${PROJECT_ROOT}/bin/arm64" docker run --rm --platform linux/arm64 \ -u "$(id -u):$(id -g)" \ -v "${PROJECT_ROOT}":/src \ -w /src/build-arm64 \ "${IMAGE}" \ /bin/sh -c "cmake -DCMAKE_BUILD_TYPE=Release \ -DEXECUTABLE_OUTPUT_PATH=/src/bin/arm64 \ -DRUNTIME_OUTPUT_DIRECTORY=/src/bin/arm64 .. && make -j${JOBS}" echo "" echo ">>> 完成。产物:" file "${PROJECT_ROOT}/bin/arm64/pPowerManger"