1) 导入 OHOS 环境(当前会话)
export OHOS_SDK=/root/harmony/command-line-tools/sdk/default/openharmony export OHOS_SYSROOT=$OHOS_SDK/native/sysroot export PATH=$OHOS_SDK/native/llvm/bin:$PATH# 确认编译器&sysroot可用 which aarch64-linux-ohos-clang test -d "$OHOS_SYSROOT/usr/include" && echo "SYSROOT OK" || echo "SYSROOT MISSING"
2) 重新写入“最小可用”的 toolchain(避免解析错误)
cd ~/aom cat > toolchain-ohos-aarch64.cmake <<'EOF' # --- Minimal OHOS aarch64 toolchain for libaom (safe formatting) --- set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR aarch64)# Prefer OHOS clang set(CMAKE_C_COMPILER aarch64-linux-ohos-clang) set(CMAKE_CXX_COMPILER aarch64-linux-ohos-clang++)# Sysroot from env if(DEFINED ENV{OHOS_SYSROOT})set(CMAKE_SYSROOT "$ENV{OHOS_SYSROOT}") else()message(FATAL_ERROR "OHOS_SYSROOT not set in environment.") endif()# Search in sysroot set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)# PIC set(CMAKE_POSITION_INDEPENDENT_CODE ON)# LLVM tools (optional) find_program(LLVM_AR llvm-ar) if(LLVM_AR)set(CMAKE_AR ${LLVM_AR}) endif() find_program(LLVM_RANLIB llvm-ranlib) if(LLVM_RANLIB)set(CMAKE_RANLIB ${LLVM_RANLIB}) endif()# Fallback: host clang + --target find_program(HOST_CLANG clang) find_program(HOST_CLANGXX clang++) if(NOT EXISTS "/usr/bin/aarch64-linux-ohos-clang")if(HOST_CLANG AND HOST_CLANGXX)set(CMAKE_C_COMPILER ${HOST_CLANG})set(CMAKE_CXX_COMPILER ${HOST_CLANGXX})set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --target=aarch64-unknown-linux-ohos")set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --target=aarch64-unknown-linux-ohos")set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} --target=aarch64-unknown-linux-ohos")endif() endif() EOF# 确保是UNIX换行,避免“Parse error” dos2unix toolchain-ohos-aarch64.cmake
3) 生成 & 编译(Ninja)
mkdir -p ~/aom/build-ohos cd ~/aom/build-ohos rm -rf CMakeCache.txt CMakeFiles cmake_install.cmake Makefile build.ninjacmake .. \-G Ninja \-DCMAKE_TOOLCHAIN_FILE=../toolchain-ohos-aarch64.cmake \-DCMAKE_BUILD_TYPE=Release \-DBUILD_SHARED_LIBS=0 \-DENABLE_DOCS=0 \-DENABLE_TESTS=0 \-DENABLE_EXAMPLES=0 \-DAOM_TARGET_CPU=aarch64 \-DAOM_TARGET_SYSTEM=linuxninja -j"$(nproc)"# 产物检查 ls -lh libaom.*
4)安装
ninja install