ubuntu 18.04 安裝opencv3.2.0的坑

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # 處理圖像所需的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev # 處理視頻所需的包
sudo apt-get install libatlas-base-dev gfortran # 優化opencv功能
sudo apt-get install ffmpeg

轉載自:https://www.jianshu.com/p/4704e61cb6a0 ,https://www.jianshu.com/p/33c4aea6117b

cd opencv-3.2.0  
mkdir build  
cmake -D WITH_CUDA=OFF -D WITH_LAPACK=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local OPENCV_EXTRA_MODULES_PATH=/home/dell1804/ws_orbslam2/src/opencv-3.2.0 ..
make -j4
make install

 

如果出現編譯問題“undefined reference to `cblas_sgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, int, int, int, float, float const, int, float const, int, float, float*, int)'”
可能需要重新編譯BLAS,CBLAS,LPACK。(我的另外一篇文章)然後再重新安裝:

 

blas、lapack、cblas在Ubuntu上的安裝

 

1.確保機器上安裝了gfortran編譯器,如果沒有安裝的話,可以使用

 

sudo apt-get install gfortran

2.下載blas, cblas, lapack 源代碼

這些源碼都可以在 http://www.netlib.org 上找到,下載並解壓。這裏提供我安裝時的下載鏈接 http://www.netlib.org/blas/blas.tgz
http://www.netlib.org/blas/blast-forum/cblas.tgz
http://www.netlib.org/lapack/lapack-3.4.2.tgz
解壓之後會有三個文件夾,BLAS, CBLAS, lapack-3.4.2

3.這裏就是具體的編譯步驟(一定要按照順序)

 

tar xvf blas.tgz  #解壓三個文件

1)編譯blas

進入BLAS文件夾,執行以下幾條命令

 

gfortran -c  -O3 *.f  # 編譯所有的 .f 文件,生成 .o文件
ar rv libblas.a *.o  # 鏈接所有的 .o文件,生成 .a 文件
su cp libblas.a /usr/local/lib  # 將庫文件複製到系統庫目錄
##################################################################
#如果上面代碼有問題,可以試試下面的編譯方法
gfortran -c  -O3  -fPIC  *.f # 編譯所有的 .f 文件,生成 .o文件   加上了-fPIC
gcc -shared *.o -fPIC -o  libblas.so
cp libblas.so /usr/local/lib/
ar rv libblas.a *.o  # 鏈接所有的 .o文件,生成 .a 文件  
su cp libblas.a /usr/local/lib  # 將庫文件複製到系統庫目錄

2)編譯cblas

進入CBLAS文件夾,首先根據你自己的計算機平臺,將目錄下某個 Makefile.XXX 複製爲 Makefile.in , XXX表示計算機的平臺,如果是Linux,那麼就將Makefile.LINUX 複製爲 Makefile.in,然後執行以下命令

 

cp ../BLAS/libblas.a  testing  # 將上一步編譯成功的 libblas.a 複製到 CBLAS目錄下的testing子目錄
make # 編譯所有的目錄
sudo cp lib/cblas_LINUX.a /usr/local/lib/libcblas.a # 將庫文件複製到系統庫目錄下

問題:

 

File "./lapack_testing.py",line 17
         **except getopt.error, msg:
                            ^**
syntaxError:invalid syntax
Make:***[lapack_testing] Error 1
#注意,這裏可能有`一個關於python的保存,主要原因是我們現在使用的是python3,
#但是編譯使用的是python2,我們需要把這個文件第一行修改爲在python2環境下執行。
#第一行最後加一個2就可以。

3)編譯 lapack以及lapacke

這一步比較麻煩,首先當然是進入lapack-3.4.2文件夾,然後根據平臺的特點,將INSTALL目錄下對應的make.inc.XXX 複製一份到 lapack-3.4.2目錄下,並命名爲make.inc, 這裏我複製的是 INSTALL/make.inc.gfortran,因爲我這裏用的是gfortran編譯器。

修改lapack-3.4.2/Makefile, 因爲lapack以來於blas庫,所以需要做如下修改

 

#修改~!
#lib: lapacklib tmglib
lib: blaslib variants lapacklig tmglib

修改make.inc 文件

 

BLASLIB  = /usr/local/lib/libblas.a
CBLASLIB = /usr/local/lib/libcblas.a
LAPACKLIB = liblapack.a
TMGLIB = libtmglib.a
LAPACKELIB = liblapacke.a

主要是設定好對應的blas和cblas目標文件的鏈接路徑(在系統庫目錄下的)。接下來運行代碼:

 

make # 編譯所有的lapack文件
cd lapacke # 進入lapacke 文件夾,這個文件夾包含lapack的C語言接口文件
make # 編譯lapacke
cp include/*.h /usr/local/include #將lapacke的頭文件複製到系統頭文件目錄
cd .. #返回到 lapack-3.4.2 目錄
cp *.a /usr/local/lib # 將生成的所有庫文件複製到系統庫目錄

這裏的頭文件包括: lapacke.h, lapacke_config.h, lapacke_mangling.h, lapacke_mangling_with_flags.h lapacke_utils.h

生成的庫文件包括:liblapack.a, liblapacke.a, librefblas.a, libtmglib.a

至此cblas和lapack就成功安裝到你的電腦上了。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章