LINUX高通平台交叉编译地图软件GDAL

  • 参考

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 "-march=armv8-a -O2 -Os")
    set(CMAKE_CXX_FLAGS "-march=armv8-a -O2 -Os -include limits")

  • 编译脚本

    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"

    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_DIR=build
    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_HDF5=OFF
    -DGDAL_USE_KEA=OFF
    -DCMAKE_DISABLE_FIND_PACKAGE_HDF5=TRUE

    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

禁用。

相关推荐
琥珀色糖1 小时前
Linux守护进程
linux·终端·守护进程·会话·进程组
开心大爆炸5 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
oushaojun25 小时前
大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)
linux
苏生Susheng6 小时前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
Ruiery6 小时前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
分支预测失败6 小时前
RISC-V AIA 中断架构实战:从 PLIC 到 APLIC 与 IMSIC 的迁移
linux·后端
GeW6 小时前
RHCE学习拿证计划:锁定核心考点,实现备考效率最大化
linux
snow@li7 小时前
服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章
linux·运维·服务器
苏生Susheng7 小时前
【软件实施】Linux企业运维常用命令手册
java·linux·运维·服务器·springboot·springcloud·软件实施
额额额对了7 小时前
Linux 进程间通信(IPC)核心机制:消息队列、共享内存与信号量详解
linux·网络·网络协议