声明:本文是个人根据相关博客资料加上自己的经验整理,在此分享以供大家学习交流!
假设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
(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的配置已经完成。
明明安装了库,还出现类似: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