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日
下一篇 2022年5月25日

相关推荐