CentOS系统上编译、安装、配置OpenCV
声明:本文是个人根据相关博客资料加上自己的经验整理,在此分享以供大家学习交流!
假设CentOS系统下的CodeBlocks已经安装完成,下面我们要在CentOS平台下编译OpenCV,并在CodeBlocks下进行开发测试。
(1)下载OpenCV源码,并编译安装
当前最新的版本是OpenCV-2.2,可以从http://sourceforge.net/projects/opencvlibrary/上下载。
OpenCV的编译方式有两种,一种是传统的./configure ; make ; make install,这种方式适用于OpenCV-1.0,相应的编译过程可以参见这篇文章:http://www.opencv.org.cn/index.php/%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91,另一种方式是使用cmake . ; make ; make install,这种方式适用于OpenCV-2.x。所以,在编译OpenCV-2.2之前,得先在CentOS上安装CMake(http://www.cmake.org/)。
(1.1) 编译安装cmake:
假设cmake-2.8.4.tar.gz放在/root/software/cmake-2.8.4.tar.gz
cd /root/software/
tar zxvf cmake-2.8.4.tar.gz
编译安装cmake
下载cmake源码包cmake-2.8.4.tar.gz,mv到/usr/local/src目录下
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# tar xzvf cmake-2.8.7.tar.gz
[root@localhost src]# cd cmake-2.8.7
[root@localhost cmake-2.8.4]# ./bootstrap
---------------------------------------------
CMake 2.8.4, Copyright 2000-2009 Kitware, Inc.
---------------------------------------------
Error when bootstrapping CMake:
Cannot find appropriate C compiler on this system.
Please specify one using environment variable CC.
See cmake_bootstrap.log for compilers attempted.
---------------------------------------------
Log of errors: /usr/local/src/cmake-2.8.4/Bootstrap.cmk/cmake_bootstrap.log
---------------------------------------------
报错:缺少C的编译器。
安装gcc编译器
可以从Linux系统的安装盘中安装,也可以简单地用yum安装
[root@localhost ~]# yum install gcc
继续cmake的安装
[root@localhost cmake-2.8.4]# ./bootstrap
---------------------------------------------
CMake 2.8.4, Copyright 2000-2009 Kitware, Inc.
C compiler on this system is: cc
---------------------------------------------
Error when bootstrapping CMake:
Cannot find appropriate C++ compiler on this system.
Please specify one using environment variable CXX.
See cmake_bootstrap.log for compilers attempted.
---------------------------------------------
Log of errors: /usr/local/src/cmake-2.8.4/Bootstrap.cmk/cmake_bootstrap.log
---------------------------------------------
再次报错:缺少C++编译器。
安装gcc-c++编译器
同样可以从Linux系统的安装盘中安装,或者简单地用yum安装
[root@localhost ~]# yum install gcc-c++
重复上面的操作
[root@localhost cmake-2.8.4]# ./bootstrap
没有报错后,编译安装
[root@localhost cmake-2.8.4]# gmake
[root@localhost cmake-2.8.4]# gmake install
(1.2)编译安装opencv-2.2:(注意:若需要图形库,要先安装gtk2.x)
假设OpenCV-2.2.0.tar.bz2放在/root/software/ OpenCV-2.2.0.tar.bz2
cd /root/software/
tar jxvf OpenCV-2.2.0.tar.bz2
cd OpenCV-2.2.0
mkdir release
cd release
cmake ../
make
make install
错误及解决:http://gaodr.blog.163.com/blog/static/10461500820134824949883/
1) Linking CXX executable ../../bin/opencv_perf_core
../../lib/libopencv_highgui.so.2.4.9: undefined reference to `png_read_info@PNG12_0'
解决方案:修改/opt/opencv2.3.1目录下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpng,如下图:
万一还是不行的话,就用locate libpng查看一下,然后逐个按路径删除与libpng相关的所有东西,重新安装libpng库。
yum remove libpng
yum install libpng
yum install libpng-devel
编译freak.cpp时出现问题:
错误:在类 ‘GENERAL_REGS’ 中找不到可舍出的寄存器
经查,与编译优化参数有关,找到编译freak.cpp的编译控制文件
flags.make与link.txt,将
编译优化选项从
-O3 改为
-O0
该错误解决。
出现错误:类似c++: Internal error: Killed (program cc1plus)
解决方法:cmake是用如下命令
cmake ../ -DCMAKE_C_FLAGS_RELEASE="-O1 -DNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE="-O1 -DNDEBUG"
b)错误:
Linking CXX executable ../../bin/opencv_perf_core
../../lib/libopencv_highgui.so.2.4.5: undefined reference to `png_set_longjmp_fn'
collect2: ld 返回 1
make[2]: *** [bin/opencv_perf_core] 错误 1
make[1]: *** [modules/core/CMakeFiles/opencv_perf_core.dir/all] 错误 2
经查,与编译libopencv_highgui.so.2.4.5时参数有关,修改控制编译libopencv_highgui.so.2.4.5的文件link.txt
再修改编译pencv_perf_core的文件link.txt.
都增加或改为:-lpng /usr/local/lib/libpng16.so
该错误解决。
原因:系统中libpng.so库有不同版本,指定使用libpng16.so
(1.3)设置环境变量
这一步与Windows设置系统环境变量的目的是一样的,告诉系统相应的binary files和library files在什么位置。
cd /etc/ld.so.conf.d/
vim opencv.conf
将/usr/local/lib写入文件并保存
ldconfig
可以使用locate libcv查看一下相应库文件的位置。
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
(2)配置OpenCV
参见http://blog.csdn.net/dupei/archive/2011/05/18/6428283.aspx
配置完成以后,就可以使用测试用例进行测试了。如果顺利执行起来,说明OpenCV的配置已经完成。
最后一步,测试openCV库是否可用。
$ cd ~/openCV/samples/cpp
$ gcc -I/usr/local/include/opencv -L/usr/local/lib/ -lopencv_highgui -lstdc++ drawing.cpp -o drawing
$ ./drawing
报错:OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /home/armmlinux/zdfwork/project/software/opencv-2.4.9/modules/highgui/src/window.cpp, line 483
解决:安装gtk2.x
http://www.jb51.net/article/22134.htm
Glib安装提示gettext问题的解决方法:http://blog.csdn.net/ybdesire/article/details/7249896
安装libffi库:http://download.chinaunix.net/download/0006000/5819.shtml
编译glib库是报类似libgettext.so等的错误:http://blog.csdn.net/david_xtd/article/details/7625626
明明安装了库,还出现类似:configure: error: Library requirements (glib-2.0 >= 2.4.0 atk >= 1.0.1 pango >= 1.4.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them. 的错误:http://blog.csdn.net/ubuntulover/article/details/6978305