首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV交叉编译路径

OpenCV交叉编译路径
EN

Stack Overflow用户
提问于 2020-10-22 17:01:03
回答 1查看 65关注 0票数 1

我已经测试了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,现在它看起来像这样:

代码语言:javascript
复制
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中,我遇到了错误

代码语言:javascript
复制
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!
`

它尝试查找主机上的库而不是目标上的库,我的理解是否正确?

为什么?

EN

回答 1

Stack Overflow用户

发布于 2021-03-10 00:41:34

对于任何有类似问题的人:我从来没有得到完全有效的解决方案。然而,我设法创建了cmakefile,它至少允许我在主机上使用IDE解析项目,然后在目标计算机上编译它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64478819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档