
参考LINUX编译地图软件GDAL-CSDN博客toolchain.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 -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 RPJ_INSTALL_DIR$HOME/proj_install GDAL_INSTALL_DIR$HOME/gdal_install export PKG_CONFIG_PATH${RPJ_INSTALL_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH make clean rm -rf CMakeCache.txt CMakeFiles rm -rf ${GDAL_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_FIND_ROOT_PATH${SYSROOT};${RPJ_INSTALL_DIR} \ -DCMAKE_INSTALL_PREFIX${GDAL_INSTALL_DIR} \ -DCMAKE_PREFIX_PATH${RPJ_INSTALL_DIR} \ -DGDAL_USE_HDF5OFF \ -DGDAL_USE_KEAOFF \ -DCMAKE_DISABLE_FIND_PACKAGE_HDF5TRUE make -j$(nproc) # -j 参数可以加速编译 make install编译错误cannot find -name libjson-c.a自行编译后复制到相应目录sudo cp lib/x86_64-linux-gnu/libjson-c.a /usr/local/x86-aarch64-toolchain/sysroots/aarch64-oe-linux/usr/lib编译错误cannot find -lhdf5禁用。