您的位置:首页 > 运维架构

DM8168编译opencv

2015-09-28 17:34 183 查看
声明:

参考

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

引用:

http://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

http://my.csdn.net/uploads/201203/31/1333195166_6558.png


目前只为尝试,编译模块为默认。
上面标注的表示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 cv

133 {

134 ParallelLoopBody::~ParallelLoopBody() {}

135 +#if defined H***E_PTHREADS && H***E_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 H***E_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 H***E_PTHREADS

369

- size_t parallel_pthreads_get_threads_num();

-

370 return parallel_pthreads_get_threads_num();

371

372 #else

.

.

.

428

429 #elif defined H***E_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
-----------------------------------------------------------------
后续待补
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: