注:此篇博客最后没有在linux搭建成功Opencv,请移步:http://blog.csdn.net/tanhngbo/article/details/40403885
来查看成功的搭建。
另外,这里是成功在windows里面搭建的效果:http://blog.csdn.net/tanhngbo/article/details/40319805
在windows下面搞opencv太蛋疼了,这次在linux(ubuntu 10.04)搭建一把。
千辛万苦完全卸载了残留的vmware,又千辛万苦装上了vmware-tools
接下来按照官网的教程来看看:
http://docs.opencv.org/trunk/doc/tutorials/introduction/linux_install/linux_install.html
先装上这些软件:
[compiler] sudo apt-get install build-essential [required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev [optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
这里网速太慢,感觉要好久。
git装不上去,后来改成了git-core就可以了
接下来使用
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
发现cmake版本太旧,于是从官网下载:http://www.cmake.org/download/
我偷懒,下载了binary:cmake-3.0.2-Linux-i386.tar.gz
然后将解压出来的拷贝到/usr 里面
然后接下来可以build了。
CMake Error at 3rdparty/ippicv/downloader.cmake:75 (message):
ICV: Failed to download ICV package: ippicv_linux_20140513.tgz.
Status=6;"couldn't resolve host name"
真是桑不起啊,这里有人回复:
http://answers.opencv.org/question/40425/opencv-build-fails-because-i-cannot-download-icv/
先偷懒,屏蔽它吧。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_IPP=OFF ..
接下来使用:
make -j8
蛤蛤,终于看到编译画面了。
/home/tan/Desktop/opencv-3.0.0-alpha/modules/core/src/ocl.cpp: In member function ‘void cv::ocl::Image2D::Impl::init(const cv::UMat&, bool, bool)’:
/home/tan/Desktop/opencv-3.0.0-alpha/modules/core/src/ocl.cpp:4635: error: #pragma GCC diagnostic not allowed inside functions
/home/tan/Desktop/opencv-3.0.0-alpha/modules/core/src/ocl.cpp:4635: error: #pragma GCC diagnostic not allowed inside functions
/home/tan/Desktop/opencv-3.0.0-alpha/modules/core/src/ocl.cpp:4638: error: #pragma GCC diagnostic not allowed inside functions
make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/src/ocl.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
make: *** [all] Error 2
看起来是gcc太旧了。
找到一个mirror:
http://mirrors-ru.go-parts.com/gcc/releases/gcc-4.9.1/
从里面下载最新的gcc。
有吓人的110MB,不管了,先下着吧。
下载完gcc,编译的时候发现:
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
这下又得坑好久,于是准备换一个opencv版本。
又上官网抓了一个opecv 2.4.9版本,这下应该好点了吧!
再不行的话我再搞个旧版本的。
果然给力啊,这次直接使用
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
就可以编译了!
我现在的配置是CMAKE更新到了3.0.2,gcc没有更新,是4.4.3版本
这下又出问题啦!
error: ‘avformat_free_context’ was not declared in this scope
http://answers.opencv.org/question/32801/unresoved-avformat_free_context-was-not-declared/
这里显示是ffmpeg版本太旧的原因。我发现我的机器上根本没装。
sudo apt-get install ffmpeg
好像装出问题了,网连不上。原来是桥接的问题,之前用NAT连不上,只得用桥接。
随即下载ffmpeg-1.2.9.tar.gz,使用
./configure --disable-yasm
make -j4
sudo make install
安装好了。
接下来再编译opencv又失败了,一大串trace信息,算了,重新安装ubuntu 12.04试试看吧