准备工作LINUX编译地图软件PROJ-CSDN博客toolchain脚本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 -marcharmv8-a -O2 -Os) set(CMAKE_CXX_FLAGS -marcharmv8-a -O2 -Os -include limits)编译脚本SOURCE_ROOT_PATHpwd TOOLCHAIN_PATH/usr/local/x86-aarch64-toolchain CROSS_NAMEaarch64-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 PROJ_INSTALL_DIR$HOME/proj_install make clean rm -rf CMakeCache.txt CMakeFiles rm -rf ${PROJ_INSTALL_DIR} BUILD_DIRbuild if [ -d ${BUILD_DIR} ]; then rm -rf ${BUILD_DIR} fi mkdir ${BUILD_DIR} cd ${BUILD_DIR} cmake .. \ -DCMAKE_TOOLCHAIN_FILE${TOOLCHAIN_FILE} \ -DCMAKE_INSTALL_PREFIX${PROJ_INSTALL_DIR} \ -DCMAKE_FIND_ROOT_PATH${SYSROOT} make -j$(nproc) # -j 参数可以加速编译 make install检查编译结果$ file libproj.so.25.9.8.1 libproj.so.25.9.8.1: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]8b831cfdeda88efdcd4bc6f706da272400451831, with debug_info, not stripped