LINUX 高通平台交叉编译tangram-es
·
- 下载源码,参选:
https://blog.csdn.net/quantum7/article/details
- 安装LINUX用编译工具
cmake, ninja
- 交叉编译工具
假设放在/usr/local/x86
- 编写aarch64-oe.cmake
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
# 高通OE交叉编译器前缀
set(TOOLCHAIN_PREFIX "aarch64-oe-linux-")
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++)
set(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
set(CMAKE_RANLIB ${TOOLCHAIN_PREFIX}ranlib)
set(CMAKE_LIBRARY_ARCHIVER ${TOOLCHAIN_PREFIX}ar)
# Sysroot路径
set(TOOLCHAIN_SYSROOT "/usr/local/x86-aarch64-toolchain/sysroots/aarch64-oe-linux")
set(CMAKE_SYSROOT ${TOOLCHAIN_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)
# 编译flag适配高通AArch64
set(CMAKE_C_FLAGS "-march=armv8-a -O2 -Os")
set(CMAKE_CXX_FLAGS "-march=armv8-a -O2 -Os -include limits")
- 编译脚本
#!/bin/bash
set -e
SOURCE_ROOT_PATH=`pwd`
TOOLCHAIN_PATH=/usr/local/x86-aarch64-toolchain
CROSS_NAME=aarch64-oe-linux
CROSS_BIN=${TOOLCHAIN_PATH}/sysroots/x86_64-qtisdk-linux/usr/bin/${CROSS_NAME}
export PATH=${CROSS_BIN}:${PATH}
. ${TOOLCHAIN_PATH}/environment-setup-aarch64-oe-linux
. ${TOOLCHAIN_PATH}/environment-setup-aarch64-oe-linux-sdllvm
# 配置全局变量
TOOLCHAIN_FILE="${SOURCE_ROOT_PATH}/aarch64-oe.cmake"
SYSROOT="${TOOLCHAIN_PATH}/sysroots/aarch64-oe-linux"
PLATFORM_NAME=arm64
INSTALL_DIR="$HOME/tangram_${PLATFORM_NAME}_install"
BUILD_DIR="build_${PLATFORM_NAME}"
make clean
rm -rf CMakeCache.txt CMakeFiles
rm -rf ${INSTALL_DIR}
# 清理构建目录
rm -rf $BUILD_DIR
mkdir -p $BUILD_DIR
cd $BUILD_DIR
# CMake 完整参数
cmake .. \
-G Ninja \
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DCMAKE_FIND_ROOT_PATH=${SYSROOT} \
-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY \
-DCMAKE_BUILD_TYPE=Release \
-DRENDER_BACKEND=NONE \
-DTANGRAM_PLATFORM=NONE \
-DTANGRAM_ENABLE_3D=OFF \
-DTANGRAM_USE_EGL=OFF \
-DTANGRAM_USE_SDL=OFF \
-DTANGRAM_USE_QT=OFF \
-DTANGRAM_USE_GLFW=OFF \
-DTANGRAM_USE_METAL=OFF \
-DTANGRAM_MBTILES=ON \
-DBUILD_SHARED_LIBS=ON
# 编译&安装
ninja -j$(nproc)
ninja install
- 检查结果
echo "编译完成,输出目录:${INSTALL_DIR}"
ls -l ${INSTALL_DIR}/lib
file ${SOURCE_ROOT_PATH}/${BUILD_DIR}/core/libtangram-core.so
- 出错解决办法
更多推荐




所有评论(0)