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

禁用。

相关推荐
FoldWinCard3 小时前
D5 Linux 网络及端口命令
linux·运维·服务器
零涂毕业设计5 小时前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
tedcloud1235 小时前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
霸道流氓气质5 小时前
KMS 密钥管理服务(Key Management Service)原理与实践
linux·服务器·数据库
SakitamaX5 小时前
LVS(Linux Virtual Server)概念详解
linux·运维·lvs
小张同学a.5 小时前
Linux系统管理
linux·运维
阿龙的工作记录6 小时前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
代码村新手6 小时前
Linux的基本指令
linux·运维·服务器
hkj88086 小时前
Ubuntu 切换java版本
java·linux·ubuntu
撩得Android一次心动8 小时前
Linux编程笔记3【个人用】
linux·笔记