推荐链接:
【海思Hi3519A開發(4.移植OpenCV到Hi3519A開發板)】https://www.twblogs.net/a/5d6d3118bd9eee541c33aa92
通过勾选 BUILD_opencv_world ,编译libopencv_world.so ;
再使用 /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-strip 对其进行精简操作,可以进一步减小so文件大小,便于移植到芯片端。
参考链接:
1、OpenCV在Hi3519AV100平台的交叉编译 https://blog.csdn.net/wang3141128/article/details/97620411
通过sublime 在opencv源码目录下查找ZLIB_INCLUDE_DIRS, 设置绝对路径
在 ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}" ${ZLIB_INCLUDE_DIRS}) 前添加
set(ZLIB_INCLUDE_DIRS "/home/share/opencv/opencv-3.4.0/3rdparty/zlib/")
注意修改路径为opencv源码目录下面的zlib文件夹的绝对路径。
清除cmake,然后重新cmake & make
解决了zlib依赖ZLIB_INCLUDE_DIRS路径错误的问题
2、【嵌入式開發之Opencv(一)交叉編譯】 https://www.itread01.com/content/1549424547.html
追加了一些编译器参数,确保so文件是动态编译的
CMAKE_CXX_FLAGS # -fPIC
CMAKE_C_FLAGS # -fPIC
CMAKE_EXE_LINKER_FLAGS # -lrt -lpthread
export "LD_LIBRARY_PATH=/home/user/pkgs/lib:$LD_LIBRARY_PATH"
#通过将交叉编译器包含stdc++.so.6 等库文件的路径加入到 LD_LIBRARY_PATH 环境变量里(可以避免cmake使用ubuntu系统/usr/lib路径下的 stdc++.so.6等库文件进行链接,进而在开发版上运行程序,会报CXXABI_1.3.11 not defined in file libstdc++.so.6 的错误
4、去除不必要的WITH参数(我这边只保留了jpeg\png\protobuf 这几个)
2+3 是最重要的,解决困扰了很久的 "libopencv_core.so.4.0: symbol _ZNSt15__exception_ptr13exception_ptrC1Ev, version CXXABI_1.3.11 not defined in file libstdc++.so.6"
资源链接(这里以4.0版本为例,试过opencv4.2,只需选择对应的tag就行:
opencv: https://github.com/opencv/opencv/tree/4.0.0
opencv_contrib:https://github.com/opencv/opencv_contrib/tree/4.0.0
修改 OPENCV_EXTRA_MODULES_PATH 路径,即可编译
opencv_contrib