2021-05-12 14:32:11
CentOS6.5編譯Caffe過程記錄(系統存在多個編譯器)
最近開始學習Caffe,準備工作就是要把Caffe的開發環境建立起來,首先就是要能成功編譯Caffe,買了一本Caffe入門書:《深度學習:21天實戰Caffe》,上面有詳細的Caffe編譯說明。原本以為照著說明步驟一步步往下走就能一輕鬆完成編譯,實際情況卻比我想象的複雜了。
先說明一下我的電腦環境:
作業系統是Linux CentOS6.5(虛擬機器),原生的gcc編譯器版本是4.4.7(/usr/bin),為了編譯C++11程式碼我又安裝了支援C++11的版本5.2.0(/usr/local/bin),無Nvidia顯示卡。
安裝Caffe的依賴庫
先用yum安裝Caffe的依賴庫:
sudo yum install protobuf-devel leveldb-devel snappy-devel OpenCV-devel boost148-devel hdf5-devel atlas-devel numpy
說明:
執行yum list boost*會顯示有boost-devel和boost148-devel兩個版本可用,但boost-devel版本是1.41,不滿足Caffe的要求(1.47)所以安裝boost148-devel。
//不要同時安裝1.41,否則有可能產生大量如下編譯錯誤:
‘boost::shared_ptr<boost::error_info<boost::tag_original_exception_type, const std::type_info*> >’到‘const boost::shared_ptr<boost::exception_detail::error_info_base>’的轉換有歧義
然後安裝gflags,glog,lmdb
sudo yum install gflags-devel glog-devel lmdb-devel
出問題了,yum list並沒有找到glog…
於是我索性去github下載了gflags和glob重新編譯
gflags下載地址:https://github.com/gflags/gflags
glog下載地址:https://github.com/google/glog
編譯gflags
build_gflags.sh
#!/bin/sh
gflags_folder=gflags-master
if [ -d $gflags_folder ]
then
rm -fr $gflags_folder
fi
# 從 https://github.com/gflags/gflags 下載gflags原始碼 gflags-master.zip解壓縮
unzip gflags-master.zip
pushd $gflags_folder
# 執行cmake生成Makefile
mkdir build && cd build
cmake -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCMAKE_CXX_FLAGS=-fPIC ..
# 開始編譯 24執行緒
make -j 24
sudo make install
cd ..
popd
說明:這裡用CMAKE_CXX_COMPILER
,CMAKE_C_COMPILER
指定使用CentOS6.5原生的編譯器4.4.7,不能使用C++11編譯器,否則在後續編譯Caffe連結階段會報錯:
Undefined reference to xxxx(…std::__cxx11::basic_string … )
同時還要在用CMAKE_CXX_FLAGS
指定編譯選項-fPIC
否則後續編譯Caffe過程中也會報錯。
編譯glog
build_glog.sh
#!/bin/sh
glog_folder=glog-master
if [ -d $glog_folder ]
then
rm -fr $glog_folder
fi
# 從 https://github.com/google/glog 下載glog原始碼 glog-master.zip解壓縮
unzip glog-master.zip
pushd $glog_folder
# 執行cmake生成Makefile
mkdir build && cd build
cmake -DCMAKE_CXX_FLAGS=-fPIC ..
# 開始編譯 24執行緒
make -j 24
sudo make install
cd ..
popd
說明:這裡用CMAKE_CXX_FLAGS
指定編譯選項-fPIC
否則後續編譯Caffe過程中會報錯。
編譯Caffe
build_caffe.sh:
#!/bin/sh
caffe_folder=caffe-master
if [ -d $caffe_folder ]
then
rm -fr $caffe_folder
fi
# 從 https://github.com/BVLC/caffe 下載Caffe原始碼 caffe-master.zip解壓縮
unzip caffe-master.zip
pushd $caffe_folder
# 執行cmake生成Makefile
mkdir build && cd build
cmake -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCPU_ONLY=ON -DBUILD_Python=OFF -DBUILD_python_layer=OFF -DBoost_INCLUDE_DIR=/usr/include/boost148 -DBoost_LIBRARY_DIR=/usr/lib64/boost148 ..
# 開始編譯 24執行緒
make install -j 24
cd ..
popd
說明:
-DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++
-DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc
如前述指定使用作業系統原生的4.4.7編譯器,
如果不加這個引數也能找到原生的編譯器,那麼這兩個引數就可以不加
-DCPU_ONLY=ON
因為我的電腦上沒有Nvidia顯示卡也沒有安裝cuDNN,所以這裡只編譯CPU版本
-DBUILD_python=OFF
-DBUILD_python_layer=OFF
不編譯Python相關程式碼
Centos6.5預設安裝的python版本(2.6.6)也不滿足Caffe的要求(2.7),生成Makefile時會有警告並報錯,如果你暫時用不到python相關的特性,可以像我一樣把BUILD_python,BUILD_python_layer
禁用,否則你就要去安裝一個2.7以上版本的python,參見我的另一篇文章《CentOS6.5下為編譯Caffe升級python2.6.6到2.7》
-DBoost_INCLUDE_DIR=/usr/include/boost148
-DBoost_LIBRARY_DIR=/usr/lib64/boost148
指定Boost的include和library路徑
安裝boost148-devel時,boost148的標頭檔案並沒有安裝在/usr/include/boost,而是安裝在/usr/include/boost148/boost下
同樣的道理安裝boost148-devel時
libboost-*.so檔案(比如/usr/lib64/下libboost-filesystem-mt.so)的軟連線都安裝在/usr/lib64/boost148下而非預設的/usr/lib64下
所以這裡要指定boost include檔案和library檔案路徑
-j 代表多執行緒編譯,後面的數位指開啟多少個執行緒進行編譯,我編譯用的電腦是24核伺服器所以設定為24,使用多執行緒編譯可以大大加快編譯速度。
Ubuntu 15.04 下Caffe + + CUDA 7.0 安裝設定指南 http://www.linuxidc.com/Linux/2016-11/137497.htm
Caffe 深度學習入門教學 http://www.linuxidc.com/Linux/2016-11/136774.htm
Ubuntu 16.04下Matlab2014a+Anaconda2+OpenCV3.1+Caffe安裝 http://www.linuxidc.com/Linux/2016-07/132860.htm
Ubuntu 16.04系統下CUDA7.5設定Caffe教學 http://www.linuxidc.com/Linux/2016-07/132859.htm
Caffe在Ubuntu 14.04 64bit 下的安裝 http://www.linuxidc.com/Linux/2015-07/120449.htm
深度學習框架Caffe在Ubuntu下編譯安裝 http://www.linuxidc.com/Linux/2016-07/133225.htm
Caffe + Ubuntu 14.04 64bit + CUDA 6.5 設定說明 http://www.linuxidc.com/Linux/2015-04/116444.htm
Ubuntu 16.04上安裝Caffe http://www.linuxidc.com/Linux/2016-08/134585.htm
Caffe設定簡明教學 ( Ubuntu 14.04 / CUDA 7.5 / cuDNN 5.1 / OpenCV 3.1 ) http://www.linuxidc.com/Linux/2016-09/135016.htm
Ubuntu 16.04上安裝Caffe(CPU only) http://www.linuxidc.com/Linux/2016-09/135034.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-03/142239.htm
相關文章