本文主要是介绍OpenCV ARM移植(交叉编译opencv3.1.0)make 问题汇总,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先需要配置编译环境,这个网上很多,大家可参考以下ref:
https://blog.csdn.net/zdyueguanyun/article/details/51272989
这边文章中讲的很全面。
下面我说一下我在make 编译的时候出现的问题:
1)
错误信息为:
[ 31%] Linking CXX shared library …/…/lib/libopencv_core.so
…
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
Makefile:160: recipe for target ‘all’ failed
make: *** [all] Error 2
在编译过程中出现Linking CXX shared library …/…/lib/libopencv_core.s时候,可以判断是版本问题(64位Ubuntu)
解决:
进入opencv3.1.0之后目录下的3rdparty下的对应目录CMakeFiles/*.dir下的flags.make,在C_FLAGS或者CXX_FLAGS=后面添加 -O3 -FPIC,用来支持64位机上编译。
修改C_FLAGS = -W -Wall 为 C_FLAGS = -O3 -fPIC -W -Wall
和
修改CXX_FLAGS = -W -Wall 为 C_FLAGS = -O3 -fPIC -W -Wall
2)
问题描述:
[ 43%] Building CXX object apps/visualisation/CMakeFiles/opencv_visualisation.dir/opencv_visualisation.cpp.obj
[ 43%] Linking CXX executable ../../bin/opencv_annotation
../../lib/libopencv_core.so: undefined reference to `pthread_mutexattr_destroy'
../../lib/libopencv_imgcodecs.so: undefined reference to `pthread_create'
../../lib/libopencv_core.so: undefined reference to `pthread_key_create'
../../lib/libopencv_imgcodecs.so: undefined reference to `png_init_filter_functions_neon'
../../lib/libopencv_core.so: undefined reference to `pthread_getspecific'
../../lib/libopencv_core.so: undefined reference to `dlopen'
../../lib/libopencv_core.so: undefined reference to `pthread_mutex_trylock'
../../lib/libopencv_core.so: undefined reference to `pthread_key_delete'
../../lib/libopencv_core.so: undefined reference to `dlclose'
../../lib/libopencv_core.so: undefined reference to `dlsym'
../../lib/libopencv_core.so: undefined reference to `pthread_mutexattr_settype'
../../lib/libopencv_imgcodecs.so: undefined reference to `pthread_join'
../../lib/libopencv_core.so: undefined reference to `pthread_setspecific'
../../lib/libopencv_core.so: undefined reference to `pthread_mutexattr_init'
collect2: error: ld returned 1 exit status
当出现以上错误时候,我们需要修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS后面添加:
-lpthread -lrt -ldl
//Flags used by the linker.
CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl
3)
问题描述:
OpenCV编译 Make出错 recipe for target 'modules/imgproc/CMakeFiles/opencv_test_imgproc.dir/all' failed
我们需要在CMakeCache.txt中添加编译选项:
找到 ENABLE_PRECOMPILED_HEADERS这行编译命令。
ENABLE_PRECOMPILED_HEADERS=OFF
如果继续报错,上网查询错误信息即可,知道编译成功,然后make install即可安装成功。安装时候需要
sudo make install
这篇关于OpenCV ARM移植(交叉编译opencv3.1.0)make 问题汇总的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!