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

禁用。

相关推荐
承渊政道4 分钟前
Linux网络学习【深入理解多路转接select、poll的代码改写】
linux·ubuntu·select·多路转接·poll
雪落漂泊6 分钟前
Linux进程(四)概念:命令行参数和环境变量篇
linux·运维·服务器
qq_3775727728 分钟前
linux x86 arm loongarch
linux
Dragon~Snow1 小时前
Centos Stream10 安装 MySQL-9.7.2-linux-glibc2.28-x86_64.tar
linux·mysql·centos
say_fall1 小时前
【Linux系统编程】Linux进程信号:从“外卖到了“到内核里的一张位图
linux·运维·服务器·车载系统·智能硬件
坤坤子吖1 小时前
Linux网络编程:UDP进阶,从字典服务器到简单聊天室
linux·服务器·网络·c++·笔记·学习
Rabitebla2 小时前
【Linux学习笔记】进程篇(九):进程的创建与退出——fork、写时拷贝与退出码
linux·c++·笔记·学习
李松桃2 小时前
基于IP的服务配置
linux·nginx-核心模块配置
FungLeo2 小时前
成为全栈·基础补充·Linux 服务器入门
linux·运维·服务器·ssh·部署·成为全栈
爱和冰阔落2 小时前
【Linux网络】TCP 服务器怎么写?从 listen、accept 到 read/write,手写完整 Echo Server
linux·运维·服务器·网络