如果需要编译Python的caffe库,需要安装Python,这里就不详述Python的安装了
1.caffe依赖库安装
可以通过apt-get 安装
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 libopenblas-dev liblapack-dev libatlas-base-dev sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
或者通过
源文件安装,这里我打包了所需的源文件库,自己也可以去官网下载
下载地址:http://download.youkuaiyun.com/download/yanhaiming56/10205999
① Protobuf glog lmdb openblas
由于我配置的是python3.6
的接口,因此protobuf
的版本必须大于3.0以上
以上这几个源文件都是直接解压,进入文件夹,执行:
./configure (如果这里默认安装都系统目录下,如果想安装在自己的目录,可以 执行 ./configure --prefix="自己的目录")
make all -j8
sudo make install (如果confiure配置了prefix,就安装在了指定的目录)
② boost
这里是boost1.66a) 解压源文件编译,执行
./bootstrap.sh
./b2
sudo ./b2 install
b) 上一步执行完毕可能没有编译boost的Python库,再次执行
./bootstrap.sh
./b2 --with-python include="pyconfig.h所在目录"(pyconfig.h所在位置,可以通过find命令去找,如果是anaconda,在anaconda/inlude/python3.6m,我这里是Python3.6,所以是Python3.6m,根据自己的Python版本去找对应的pyconfig.h所在目录)
sudo ./b2 install
③ gflags snapppy
这两个源文件使用cmake,这里我使用cmake-gui,如果没有cmake-gui就先安装sudo apt-get install cmake
sudo apt-get install cmake-gui
在命令行直接执行cmake-gui,如图:
在where is the source code 输入源码路径,在where to build the binaries (一般在源文件目录新建一个文件夹,比如build,这样便于找到)输入构建路径,点击左下方configure,会生成配置列表,是一个name-value,其中build_shared_libs要选上,然后点击generate。
然后就是进入where to build the binaries 所指定的目录下,执行
make all -j8
sudo make install
④ hdf5
如果需要编译Python版caffe,这个要使用和Python安装的hdf5的版本一至,查看Python安装的hdf5版本,执行
pip list | grep "hdf5"
我这里已经安装最新的版本1.10.1,我提供的打包库文件源码也是1.10.1,这个是支持cmake编译的,但是我还是用了make方式编译
解压CMake-hdf5-1.10.1.tar.gz,进入CMake-hdf5-1.10.1/hdf5-1.10.1,执行
./configure --prefix="/usr/local/hdf5" (这个一定要指定目录
make all -j8
sudo make install
④ leveldb
⑦ atlas-devel
这个源码编译安装有问题,直接使用apt-get安装sudo apt-get install liblapack-dev libatlas-base-dev
opencv
Caffe编译
cd caffe
vi Makefile
找到# Complete build flags
其下的
COMMON_FLAGS +=
后面加上-I/usr/local/hdf5/include
LDFLAGS +=
后面加上-L/usr/local/hdf5/lib
/usr/local/hdf5就是在编译安装hdf5时指定的安装目录
修改Makefile.config
如果没有Makefile.config
,
cp Makefile.config.example Makefile.config
vi Makefile.config
修改Makefile.config,如下:
CPU_ONLY := 1
#如果使用的是anaconda安装的Python设置如下
ANACONDA_HOME := anaconda所在目录
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
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/local/hdf5/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/local/hdf5/lib
这些都配好,就可以执行
make all -j8
make test -j8
make runtest -j8
make pycaffe
在执行以上几个make时,常出现的错误
.build_release/tools/caffe
.build_release/tools/caffe: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/HY/caffe/caffe/.build_release/tools/../lib/libcaffe.so.1.0.0)
.build_release/tools/caffe: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/local/lib/libopencv_core.so.3.1)
.build_release/tools/caffe: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/local/lib/libopencv_imgcodecs.so.3.1)
make: *** [runtest] Error 1
这个错误是因为gcc版本过低,安装更新版本的gcc,如果直接sudo apt-get install build-essential依然获取的是低版本,那就下载源码安装。
error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
这个错误就是找不到python库,编辑.bahsrc添加
export LD_LIBRARY_PATH="anaconda目录/lib:$LD_LIBRARY_PATH"
保存,source ~/.bashrc
c)以下错误
Warning! ***HDF5 library version mismatched error***
The HDF5 header files used to compile this application do not match
the version used by the HDF5 library to which this application is linked.
Data corruption or segmentation faults may occur if the application continues.
This can happen when an application was compiled by one version of HDF5 but
linked with a different version of static or shared HDF5 library.
You should recompile the application or check your shared library related
settings such as 'LD_LIBRARY_PATH'.
You can, at your own risk, disable this warning by setting the environment
variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'.
Setting it to 2 or higher will suppress the warning messages totally.
Headers are 1.8.3, library is 1.8.17
是因为python的hdf5与系统中安装的hdf5不一致,所以这也是为什么前面hdf5安装的时候我一再强调版本和安装路径。找到和Python的hdf5同一版本的hdf5源码进行安装
最后配置Python路径
编辑.bashrc文件vi ~/.bashrc
在文件最后加上
export PYTHONPATH="caffe目录/python:$PYTHONPATH"
保存退出vi,执行source ~/.bashrc
python要用caffe还要安装protobuf
pip install protobuf
最后执行
python进入Python命令行
输入import caffe
如果没有报错,说明caffe成功安装。