我已经测试了Myzhars教程中的一个程序,用于jetsonNano + FLIR热像仪(https://github.com/Myzhar/Lepton3_Jetson),我可以在目标平台(jetson nano)上成功地运行cmake和make,但是我希望能够从我的x86_64 linux PC进行交叉编译。
我已经(开始)通过` `sudo sshfs -o follow_symlinks jetson@nano:/ /mnt/sysroot挂载了Jetson到/mnt/sysroot,正如我所期望的那样,我认为从现在开始设置交叉编译将会很容易。我已经修改了我的cmakelist.txt,现在它看起来像这样:
cmake_minimum_required (VERSION 3.14)
project (lepton3_jetson)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
set(CMAKE_DEBUG_POSTFIX "_d")
#########################################################
# FLAGS
set (CMAKE_CXX_STANDARD 17)
#########################################################
#crossCompile
set(sysroot /mnt/sysroot)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set (CMAKE_SYSROOT, ${sysroot})
SET(CMAKE_FIND_ROOT_PATH ${sysroot})
set(tools /opt/linaro/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu)
set(CMAKE_C_COMPILER ${tools}/bin/aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER ${tools}/bin/aarch64-linux-gnu-g++)
set(CROSSBIN ${tools})
# search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --sysroot=${sysroot}" CACHE INTERNAL "" FORCE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --sysroot=${sysroot}" CACHE INTERNAL "" FORCE)
set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} --sysroot=${sysroot}" CACHE INTERNAL "" FORCE)
set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} --sysroot=${sysroot}" CACHE INTERNAL "" FORCE)
#crossCompile end
# Letpon3 Library source code
add_subdirectory (grabber_lib)
# OpenCV demo
add_subdirectory (opencv_demo)
# Check Fever App
add_subdirectory (check_fever_app)
# Qt ZED app
find_package(Qt5 COMPONENTS Widgets)
find_package(ZED 3)
if(Qt5_FOUND AND ZED_FOUND)
add_subdirectory(qt_check_fever)
endif()然而,我似乎不能让它以我想要的方式运行。目前,在这个版本的cmake中,我遇到了错误
CMake Error at /usr/local/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
Could NOT find BLAS (missing: BLAS_LIBRARIES)
Call Stack (most recent call first):
/usr/local/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE)
/usr/local/share/cmake-3.18/Modules/FindBLAS.cmake:947 (find_package_handle_standard_args)
/mnt/sysroot/usr/local/zed/zed-config.cmake:36 (find_package)
CMakeLists.txt:53 (find_package)
CMake Warning at CMakeLists.txt:53 (find_package):
Found package configuration file:
/mnt/sysroot/usr/local/zed/zed-config.cmake
but it set ZED_FOUND to FALSE so package "ZED" is considered to be NOT
FOUND.
-- Configuring incomplete, errors occurred!
`它尝试查找主机上的库而不是目标上的库,我的理解是否正确?
为什么?
发布于 2021-03-10 00:41:34
对于任何有类似问题的人:我从来没有得到完全有效的解决方案。然而,我设法创建了cmakefile,它至少允许我在主机上使用IDE解析项目,然后在目标计算机上编译它。
https://stackoverflow.com/questions/64478819
复制相似问题