- 下载源码,参选:
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 -eSOURCE_ROOT_PATH=
pwdTOOLCHAIN_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_DIRCMake 完整参数
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
-
出错解决办法