1. 程式人生 > >在CENT OS 7.0 64位系統上原始碼編譯安裝OPENCV3.0以及CUDA7.0,支援CUDA開發,並整合QT5.5.0的開發環境

在CENT OS 7.0 64位系統上原始碼編譯安裝OPENCV3.0以及CUDA7.0,支援CUDA開發,並整合QT5.5.0的開發環境

=============================概述=================================
在CENT OS 7.0 64位系統上原始碼編譯安裝OPENCV,支援CUDA,並整合QT的開發環境,整體過程如下:
1,安裝作業系統,我使用U盤安裝,可參考網路上的U盤安裝盤製作的文章;
2,配置作業系統,參考http://seisman.info/linux-environment-for-seismology-research.html
3,安裝顯示卡驅動,在命令列模式下進行,下載地址在NVIDIA官網;
4,安裝CUDA 7.0,在命令列模式下進行,下載地址在NVIDIA官網;
5,安裝基礎庫,參考下面的第三部分1到43的安裝內容;
6,安裝X264,注意安裝選項:#./configure --enable-shared --enable-pic
7,安裝FFMPEG,注意安裝選項,必須設定CXXFLAGS="-fPIC"和CFLAGS="-fPIC"以及--enable-pic,並要注意不要使用--enable-static和--disable-static
8,安裝QT5.5.0,到官網上下載,現在QT發展挺快,最新的版本為5.5.0,功能也非常棒,相關的開發工作比MS VC簡單直觀;
9,安裝依賴庫,參考下面的第三部分1到43的安裝內容;
10,設定編譯引數,參考重點注意事項:
11,原始碼編譯
12,編譯安裝

13,開發驗證,在程式碼的標頭檔案裡包含OPENCV的庫,並在專案的xxxx.pro檔案裡新增相關的應用,如下:

INCLUDEPATH += /usr/local/include \                 /usr/local/include/opencv \                 /usr/local/include/opencv2 LIBS += /usr/local/lib/libopencv_calib3d.so\        /usr/local/lib/libopencv_core.so\        /usr/local/lib/libopencv_features2d.so\        /usr/local/lib/libopencv_flann.so\        /usr/local/lib/libopencv_highgui.so\        /usr/local/lib/libopencv_imgcodecs.so\        /usr/local/lib/libopencv_imgproc.so\        /usr/local/lib/libopencv_ml.so\        /usr/local/lib/libopencv_objdetect.so\        /usr/local/lib/libopencv_photo.so\        /usr/local/lib/libopencv_shape.so\        /usr/local/lib/libopencv_stitching.so\        /usr/local/lib/libopencv_superres.so\        /usr/local/lib/libopencv_video.so\        /usr/local/lib/libopencv_videoio.so\        /usr/local/lib/libopencv_videostab.so
==========================安裝過程====================================
下面的具體的過程記錄。
1,在命令列模式下安裝nvidia驅動以及CUDA TOOL 7.0,命令列與圖形模式切換命令如下:
sudo systemctl set-default multi-user.target #命令列模式
sudo systemctl set-default graphical.target #圖形模式
Ctrl + F2重啟計算機
2,以下是參考過的博文,感謝相關的作者。
http://seisman.info/linux-environment-for-seismology-research.html
http://blog.chinaunix.net/uid-23069658-id-4018842.html
http://www.ozbotz.org/opencv-installation/
http://stackoverflow.com/questions/8370028/strange-linker-error-while-compiling-opencv2-3-1-on-ubuntu-11-10
http://blog.chinaunix.net/uid-20662363-id-3036581.html
http://3y.uu456.com/bp_7edvv509i00ne2c1faxc_1.html
http://www.aichengxu.com/view/52231
http://www.it165.net/pro/html/201407/17019.html
http://jingyan.baidu.com/article/e75057f2c8d6e4ebc91a89cd.html
http://blog.csdn.net/Etiennezhao/article/details/46574729
http://www.cnblogs.com/zjoch/archive/2013/05/16/3082002.html
http://blog.csdn.net/dgyanyong/article/details/12052857
http://www.linuxidc.com/Linux/2014-11/109840.htm
http://blog.csdn.net/season_hangzhou/article/details/24399371
http://ju.outofmemory.cn/entry/25624
http://ju.outofmemory.cn/entry/25625
http://www.linuxidc.com/Linux/2015-02/112693.htm
http://blog.csdn.net/bendanban/article/details/41280859
http://bbs.chinavideo.org/forum.php?mod=viewthread&tid=19718&extra=page%3D1
http://www.centoscn.com/image-text/install/2014/0712/3284.html
http://blog.csdn.net/wangyaninglm/article/details/39997113
3,主要的安裝庫以及安裝順序,相關的順序最好不要打亂。
說明:因為不同的版本可能有差異,在安裝的時候,注意使用萬用字元*通過YUM/APT-GET來查詢相關的選項;
在下面的安裝過程中,並不表示所有的庫都是通過YUM安裝的,有的會找不到源,那就通過手動下載原始碼進行,手動下載的
時候,一般可以考慮優先安裝最新的版本,如果是在發現有問題,再考慮降低版本安裝。
安裝,安裝的過程中都採用預設的--prefix==/usr/local選項,這個選項你不指定的時候都預設到了/usr/local;
需要特別注意的時候有編譯報錯的時候,安裝一下*-dev的庫就可以解決問題,具體的方式就是通過YUM的前後萬用字元
查詢相關的安裝包,你也可以直接使用sudo yum install *xxxyyy*來安裝所有可能需要的包,你可以在系統給出的
安裝包列表裡通過調整萬用字元的位置以及關鍵詞篩選你需要的按照包。
1,sudo yum install *faac*
2,sudo yum install *lame*
3,sudo yum install *ogg*
4,sudo yum install *theora*
5,sudo yum install *vorbis*
6,sudo yum install *vo-aacenc*
7,sudo yum install *xvid*core
8,sudo yum install *cmake*
9,sudo yum install  libavcodec*
10,sudo yum install lib*raw1394*
11,sudo yum install lib*dc1394*
12,sudo yum install lib*freetype* 2.5
13,sudo yum install *fribidi*
14,sudo yum install fontconfig
15,sudo yum install libass
16,sudo yum install openssl
17,sudo yum install librtmp
18,sudo yum install libspeex
19,sudo yum install twolame
20,sudo yum install *opencore*
21,sudo yum install *yasm* #先安裝
#安裝X264以及FFMPEG之前,先解除安裝:sudo yum remove ffmpeg x264 libx264-dev  
22,sudo yum install *x264* #./configure --enable-shared --enable-pic
23,sudo yum install *xvid*
24,sudo yum install *autoconf*
25,sudo yum install *frei0r*
26,sudo yum install nettle-3.1.tar.gz
27,sudo yum install p11-kit
28,sudo yum install gnutls-3.4.3.tar.xz //./configure --enable-shared --with-included-libtasn1 --without-p11-kit //找不到的時候手動下載
29,sudo yum install LIBIDN
30,sudo yum install *libunbound*
31,sudo yum install *opus*//單獨安裝庫檔案
32,sudo yum install rtmpdump
33,sudo yum install schroedinger
34,sudo yum install librtmp*
35,sudo yum install *speex*
36,sudo yum install *soxr*
37,sudo yum install vo-amrwbenc-0.1.3 #下載
38,sudo yum install libvpx*
39,sudo yum install qt-gstreamer*
40,sudo yum install gstreamer*
41,sudo yum install *v4l*
42,sudo yum install *libv4l*
43,補充安裝,在網路上找一下。
yum install cmake gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel jasper-devel jasper-utils swig python libtool nasm
=======================注意事項=======================================
重點注意事項:
1,X264安裝選項:
sudo ./configure --enable-shared --enable-pic
2,ffmpeg-2.7.2安裝選項:
sudo CXXFLAGS="-fPIC" CFLAGS="-fPIC" ./configure  --enable-shared --enable-gpl --enable-version3 --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-zlib --enable-libfaac --enable-nonfree --enable-postproc --enable-x11grab --enable-memalign-hack --enable-pthreads --enable-pic
3,OPENCV編譯選項:
3.1,為了加快編譯,可以將CUDA_ARCH_BIN中的數字設定為目標GPU的Compute Capability。
比如本機顯示卡為GTX750 TI ,將CUDA_ARCH_BIN設定為5.0,CUDA_ARCH_PTX為5.0。
CUDA_ARCH_PTX及CUDA_ARCH_BIN中僅保留所需GPU架構,具體的計算能力可以查詢以下地址:
確定所需架構,請查詢https://developer.nvidia.com/cuda-gpus
3.2 確認選項
  WITH_CUDA ON;
  CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE OFF
  WITH_CUBLAS ON
  WITH_CUDA ON
  WITH_OPENGL ON
  WITH_OPENCL ON
  WITH_TBB ON
  BUILD_DOCS ON
  BUILD_EXAMPLES ON
  WITH_GSTREAMER ON   
  WITH_JPEG   ON
  WITH_GTK  ON
  WITH_PNG   ON
  WITH_FFMPEG ON   
  WITH_V4L ON
  WITH-QT ON
在CMAKE的過程中,需要多次執行,並修改配置引數,直到不報錯為止,具體可以參考網路上的文章;
3.3 下載和安裝TBB,具體可以參考網上的文章
修改環境變數 
shell下執行: # vim ~/.bashrc 

在最後新增 source /opt/Tbb/tbb43_20150611oss/tbb43_20150611oss/build/linux_intel64_gcc_cc4.8.3_libc2.17_kernel3.10.0_release/

/tbbvars.sh,對應的連結庫就是-ltbb了
4,相關的環境變數與庫檔案位置配置
4.1,在/etc/ld.so.conf.d/目錄下新增各個相關庫的conf檔案,具體的命令可以參考如下:
sudo vim /etc/ld.so.conf.d/xxxyyyxx-x86-64.conf,在新建的檔案裡新增相關庫檔案的路徑,如:/usr/local/cuda/lib
新增完成之後通過sudo ldconfig命令進行更新;
4.2,在/etc/profile檔案裡新增PATH以及PKG_CONFIG_PATH和LD_LIBRARY_PATH,具體如下:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib64:/usr/lib:/usr/lib64:/usr/local/cuda/lib:/usr/local/cuda/lib64
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/QT/Qt5.5.0/5.5/gcc_64/lib
PATH=$PATH:/usr/local/cuda-7.0/bin:/usr/local/cuda/bin:/usr/local/bin:/opt/QT/Qt5.5.0/5.5/gcc_64/bin
export PATH
export LD_LIBRARY_PATH
export PKG_CONFIG_PATH
=============
新增完畢之後通過source /etc/profile進行更新,相關的設定是否正確,可以通過sudo env來檢查環境變數的配置是否正確,也可以直接執行所安裝的可執行檔案的命令來檢查環境變數配置是否正確;
4.3,在安裝的過程中,可能會提示庫檔案找不到之類的,或者命令找不到,可以在這個時候考慮執行 export 和 ldconfig命令。