linux下caffe環境搭建

我用的是linux mint 18.2 64位,因爲是虛擬機安裝,所以只能用CPU。因爲我的linux mint18.2是基於ubuntu16.04版本的所以按官方文檔安裝說明http://caffe.berkeleyvision.org/install_apt.html點擊打開鏈接,裏面的<17.04進行安裝。

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install libatlas-base-dev


因爲我首先系統是新做的,python也沒有安裝其它的。都是系統只帶的,後面我會說安裝python anaconda的應該怎麼弄。

下面是對Makefile.config進行修改,首先執行下面linux命令。複製出一個Makefile.config

cp Makefile.config.example Makefile.config

因爲我用的是CPU。所以把

CPU_ONLY := 1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

前面的註釋去掉

然後執行

make all

C++環境的就編譯完成了,因爲C++編譯時不用python所以python的設置可以不用。都用默認的就可以。

下面是python的配置

首先我安裝的是anaconda3。因爲我用的是python3.6

然後修改Makefile.config文件中的

ANACONDA_HOME := /home/learnml/anaconda3
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
	       $(ANACONDA_HOME)/include/python3.6m \
	       $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include
PYTHON_LIBRARIES := boost_python3 python3.6m
PYTHON_LIB := $(ANACONDA_HOME)/lib
WITH_PYTHON_LAYER := 1

下面是在編譯make all和make pycaffe時出現的一些問題的解決。

1.cannot find -lboost_python3

解決辦法:

首先去/usr/lib/x86_64-linux-gnu目錄下查看是否有python3版本的libboost,如果有類似libboost_python35.so但是沒有libboost_python3.so則需要手動建立連接。

sudo ln -s libboost_python-py35.so libboost_python3.so 
2.version `GLIBCXX_3.4.21' not found

解決辦法:

安裝anaconda3下面的libgcc。

conda install libgcc

3 std::__cxx11::basic_string報錯。

解決辦法:

這個是因爲anaconda3裏面的的文件與C++的編譯衝突了。這個只能安完anaconda3後在編譯make all時纔會出現。

解決辦法是把

ANACONDA_HOME := /home/learnml/anaconda3 這個的路徑改成不存在的。

改成:ANACONDA_HOME := /home/learnml/anaconda 這樣在make all時就不會報這個錯了。然後在make pycaffe時在把路徑改回正確的。

4. pyconfig.h:No such file or Directory 

解決辦法:

這個是在make all時報的。把

#WITH_PYTHON_LAYER := 1--註釋打上。注掉這個,在make all

5.ImportError: /home/zero/Documents/caffe-master/python/caffe/_caffe.so:undefined symbol:   
_ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE

解決辦法:這個是在python環境裏,import caffe時報的錯。

PYTHON_LIBRARIES := boost_python3 python3.6m--把這個註釋去掉。
6.No module named google.protobuf.internal

解決辦法:這個也是在python環境下,import caffe時報的錯。

在linux 環境下,${anaconda3}/bin 下。

sudo ./conda install protobuf


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