Hi3519av100 移植Opencv4.0+opencv_contrib 踩坑记录

推荐链接:

【海思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  

3、【How to force cmake link against custom gcc libraries 】https://stackoverflow.com/questions/33185432/how-to-force-cmake-link-against-custom-gcc-libraries

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 这几个)

Hi3519av100 移植Opencv4.0+opencv_contrib 踩坑记录_第1张图片Hi3519av100 移植Opencv4.0+opencv_contrib 踩坑记录_第2张图片

 

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

你可能感兴趣的:(海思芯片)