手机版
你好,游客 登录 注册
背景:
阅读新闻

OpenCV交叉编译错误的修改

[日期:2014-05-04] 来源:Linux社区  作者:chaorenlxl [字体: ]

环境
 
Ubuntu 11.10  +  TQ的交叉编译链4.46 +  cmake-2.8.12.2-Linux-i386 + OpenCV-2.4.1

配置的我就说了,网上有很多,自己去找。主要说一些错误的解决的办法。

例如:我在  /usr/local/Opencv-2.4.1放Opencv源码,另外在 /usr/local下新建Opencv-arm目录存放交叉编译后的库配置好后,执行cmake-gui,在弹出的窗口中的"Where is the source code"选择Opencv源码目录Opencv-2.4.1;在"Where to build the binarices"选择存放交叉编译的目录Opencv-arm,点击左下角的configure,弹出一个窗口,框条选择“Unix  Makefiles”,下面的选择最后一个;然后点击finish;然后弹出新窗口,“Operating System”填写arm-linux,“Version”填写Opencv版本(2.4.1);“C”选择交叉编译链(/opt/EmbedSky/4.4.6/bin/arm-linux-gcc);“C++”选择交叉编译链(/opt/EmbedSky/4.4.6/bin/arm-linux-g++);“Target  Root”选择交叉编译链的目录(/opt/EmbedSky/4.4.6/);然后点击Finished;(重点来了)弹出的红框中去掉BUILD_OPENER、BUILD_TIFF、BUILD_ZLIB、WITH_OPENER、WITH_TIFF其他的默认就行,点击Generate,OK!若重新cmake-gui最好在弹出的框中选择File-->Delete Cache,然后重新配置。基本可以省去几个错误!!!
 
配置完,进入交叉编译库存放的目录(Opencv-arm)进行make,然后报错了(不一定都有)~~~

--------------------------------------分割线 --------------------------------------

推荐阅读

Ubuntu Linux下安装OpenCV2.4.1所需包 http://www.linuxidc.com/Linux/2012-08/68184.htm

Ubuntu 12.04 安装 OpenCV2.4.2 http://www.linuxidc.com/Linux/2012-09/70158.htm

CentOS下OpenCV无法读取视频文件 http://www.linuxidc.com/Linux/2011-07/39295.htm

Ubuntu 12.04下安装OpenCV 2.4.5总结 http://www.linuxidc.com/Linux/2013-06/86704.htm

Ubuntu 10.04中安装OpenCv2.1九步曲 http://www.linuxidc.com/Linux/2010-09/28678.htm

基于QT和OpenCV的人脸识别系统 http://www.linuxidc.com/Linux/2011-11/47806.htm

--------------------------------------分割线 --------------------------------------

错误分析
 
1,XML::Parser perl module is required for intltool错误
      解决:cpan install XML::Parser
2,

版本问题(64位Ubuntu)
 
解决

进入opencv目录下的3rdparty的对应目录CMakeFiles/ *.dir下(所有的),打开flags.make,在C_FLAGS = 后添加-O3 -fPIC,用来支持在64位机上编译
 
如../3rdparty/zlib/CMakeFiles/zlib.dir/flags.make
 
修改C_FLAGS =  -W -Wall 为 C_FLAGS =  -O3 -fPIC  -W -Wall
 

 
修改CXX_FLAGS =  -W -Wall 为 C_FLAGS =  -O3 -fPIC  -W -Wall

3,
解决:
 
在cmake-gui的界面中把以下选项去掉
 
BUILD_OPENER、BUILD_TIFF

4,
 
Linking CXX executable ../../bin/opencv_test_calib3d
 ../../lib/libopencv_core.so: undefined reference to `pthread_key_create'
 ../../lib/libopencv_core.so: undefined reference to `pthread_getspecific'
 ../../lib/libopencv_ts.so: undefined reference to `pthread_key_delete'
 ../../lib/libopencv_core.so: undefined reference to `pthread_once'
 ../../lib/libopencv_core.so: undefined reference to `clock_gettime'
 ../../lib/libopencv_core.so: undefined reference to `pthread_setspecific'
 collect2: ld returned 1 exit status
 make[2]: *** [bin/opencv_test_calib3d] Error 1
 make[1]: *** [modules/calib3d/CMakeFiles/opencv_test_calib3d.dir/all] Error 2
 make: *** [all] Error 2
 
解决( ld returned 1 exit status都可以):
 
修改目录下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt

本文永久更新链接地址http://www.linuxidc.com/Linux/2014-05/101224.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款