OpenCV 4.x交叉编译

编译

0、下载代码:

git clone -b 4.5.5 https://github.com/opencv/opencv.git 

1、配置编译工具链,新建文件ax620a.toolchain.cmake,其内容如下:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)

set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc")
set(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++")

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_C_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon")
set(CMAKE_CXX_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon")

# cache flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")

注意CMAKE_XX_FLAGS, 视具体环境确定

2、编译

mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../ax620a.toolchain.cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/_install -DOPENCV_FORCE_3RDPARTY_BUILD=ON ../opencv
make -j$(nproc --ignore 1)

其中CMAKE_TOOLCHAIN_FILE指定编译工具链配置文件,编译完成后,编译产物位于编译目录的_install目录下,若需要编译为静态库需添加参数-DBUILD_SHARED_LIBS=OFF

遇到的问题

若cmake构建时未指定参数-DOPENCV_FORCE_3RDPARTY_BUILD=ON,编译时则会报错如下:

opencv/3rdparty/libtiff/tif_zip.c:41:10: fatal error: zlib.h: No such file or directory
 #include "zlib.h"
          ^~~~~~~~
compilation terminated.

查看opencv/CMakeLists.txt

 212 # ----------------------------------------------------------------------------
 213 # OpenCV cmake options
 214 # ----------------------------------------------------------------------------
 215 
 216 OCV_OPTION(OPENCV_ENABLE_NONFREE "Enable non-free algorithms" OFF)
 217 
 218 # 3rd party libs
 219 OCV_OPTION(OPENCV_FORCE_3RDPARTY_BUILD   "Force using 3rdparty code from source" OFF)
 220 OCV_OPTION(BUILD_ZLIB               "Build zlib from source"             (WIN32 OR APPLE OR OPENCV_FORCE_3RDPARTY_BUILD) )
.....

发现OPENCV_FORCE_3RDPARTY_BUILD参数,添加到cmake编译命令行,重新编译通过

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
上一篇 2022年5月25日 上午11:11
下一篇 2022年5月25日 上午11:15

相关推荐

本站注重文章个人版权,不会主动收集付费或者带有商业版权的文章,如果出现侵权情况只可能是作者后期更改了版权声明,如果出现这种情况请主动联系我们,我们看到会在第一时间删除!本站专注于人工智能高质量优质文章收集,方便各位学者快速找到学习资源,本站收集的文章都会附上文章出处,如果不愿意分享到本平台,我们会第一时间删除!