- 参考
-
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=
pwdTOOLCHAIN_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=TRUEmake -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
禁用。