libaom 在ubuntu 上用鸿蒙OHOS编译

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.ninja

cmake .. \
  -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=linux

ninja -j"$(nproc)"

# 产物检查
ls -lh libaom.*

  4)安装

    ninja install 

 

posted @ 2025-10-15 23:23  Fitz  阅读(15)  评论(0)    收藏  举报