声明:
参考
http://blog.csdn.net/guo8113/article/details/24493571
http://blog.csdn.net/embeddedman/article/details/7416934
一、
编译环境:ubuntu14.10 32。
target: DM8168, DVRRDK4.0。
交叉编译器:arm-arago-linux-gnueabi- (交叉编译器配置略)
二、
sudo apt-get install cmake cmake-gui
官方下载源码(for linux):http://opencv.org/
三、
终端执行: cmake-gui
引用:
https://img-my.csdn.net/uploads/201203/31/1333194450_8077.png
选择源代码目录:/opt/OpenCV-3.0
选择Build目录:/opt/opencv3.0_forArm,大家根据自己的喜好设置编译目录吧。
点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next
Operating System填写arm-inux
C Compilers选择DVRRDK_04.00.00.03/ti_tools/cgt_a8/arago/linux-devkit/binrm-arago-linux-gnueabi-gcc
C++ Compilers填写.......-g++
程序库的Target Root填写OpenCV安装目录,然后点击Finish
目前只为尝试,编译模块为默认。
上面标注的表示opencv将要安装的目录,默认为/usr/local,为了便于管理,大家可以安装在自己设定的目录下,可以修改,同时,网上资料说:另外,我没有安装tiff图像的支持,因此去掉WITH_TIFF(出自:http://blog.csdn.net/eagelangel/article/details/7232364)。在此点击Configure,然后点击Gennerate就会生成Makefile。
四、
1)
cd /opt/opencv3.0_forArm
vi CMakeCache.txt
将所有“CMAKE_EXE_LINKER_FLAGS:STRING=”加上选项
修改后: CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl
-ldl选项for:
lib/libopencv_core.so: undefined reference to `dlopen'
lib/libopencv_core.so: undefined reference to `dlsym'
错误
2)
cd /opt/source/opencv-3.0.0 (自行对比目录)
vi modules/core/src/parallel.cpp
参考:http://blog.csdn.net/lyk_ffl/article/details/47683549
在编译opencv 3.0 gold时,编译到大约37%时,出现
../../lib/libopencv_core.so.3.0.0: undefined reference to `parallel_pthreads_set_threads_num(int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `parallel_pthreads_get_threads_num()'
../../lib/libopencv_core.so.3.0.0: undefined reference to `parallel_for_pthreads(cv::Range const&, cv::ParallelLoopBody const&, double)'等好几个错误,困扰了好久,经多次尝试和不懈的坚持下,终于在github上找到了解决方法,现分享如下:
修改modules/core/src/parallel.cpp,添加7处删除5处(+表示要添加,-表示要删除)
132 namespace cv133 {
134 ParallelLoopBody::~ParallelLoopBody() {}
135 +#if defined HAVE_PTHREADS && HAVE_PTHREADS
136 + void parallel_for_pthreads(const cv::Range& range, const cv::ParallelLoopBody& body, double nstripes);
137 + size_t parallel_pthreads_get_threads_num();
138 + void parallel_pthreads_set_threads_num(int num);
139 +#endif
140 }
141
142 +
143 namespace
144 {
145 #ifdef CV_PARALLEL_FRAMEWORK
.
.
.
307 }
308
309 #elif defined HAVE_PTHREADS
- void parallel_for_pthreads(const Range& range, const ParallelLoopBody& body, double nstripes);
310 +
311 parallel_for_pthreads(range, body, nstripes);
312
313 #else
.
.
.
367
368 #elif defined HAVE_PTHREADS
369
- size_t parallel_pthreads_get_threads_num();
-
370 return parallel_pthreads_get_threads_num();
371
372 #else
.
.
.
428
429 #elif defined HAVE_PTHREADS
430
- void parallel_pthreads_set_threads_num(int num);
-
431 parallel_pthreads_set_threads_num(threads);
432
433 #endif
要是看的不方便的话,原始链接如下:
https://github.com/mshabunin/opencv/commit/1f983ec39c97298b0c8ce409a1cc229ecf14e55c?diff=unified
五、make
-----------------------------------------------------------------
后续待补