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

禁用。

相关推荐
fei_sun1 小时前
路径MTU发现
linux·运维·网络
假如梵高是飞行员2 小时前
WSL2 从 img 镜像文件启动特定 Linux 发行版完整指南
linux·windows·wsl
瓶中怪4 小时前
ROS2 机器人软件系统
linux·c++·python·ubuntu·vmware·ros2·机器人软件开发
iangyu4 小时前
linux配置时间同步
linux·运维·服务器
天空'之城4 小时前
Linux 系统编程 04:进程基础
linux·开发语言·进程基础
从零开始的代码生活_4 小时前
NAT、代理服务与内网穿透详解
linux·服务器·网络·c++·http·智能路由器
灯厂码农4 小时前
C语言内存管理——内存对齐与共用体union
linux·服务器·c语言
charlie1145141914 小时前
Cinux: 加载第一个内核:从 bootloader 跳进 C++
linux·开发语言·c++·嵌入式
iCxhust6 小时前
linux目录是否保存在硬盘 启动后读入解析的
linux·运维·服务器