Caffe实战三(依赖包解析及环境配置)

前面的文章使用的软件环境是开始时通过apt-get命令所安装的,本文将通过编译源码的方式重新配置一个可迁移的软件环境。
(参考:《深度学习 21天实战Caffe》 第五天 Caffe依赖包解析)

 

1、依赖包汇总

ProtoBuffer 由Google开发的一种可以实现内存与非易失存储介质交换的协议接口
Boost C++准标准库
GFLAGS Google的一个开源的处理命令行参数的库
GLOG Google开发的用于记录应用程序日志的库
BLAS 基本线性代数子程序
HDF5 美国国家高级计算应用中心研制的一种能高效存储和分发科学数据的新型数据格式
OpenCV 开源计算机视觉库
LMDB 闪电般的内存映射型数据库管理器
LEVELDB Caffe早期版本使用的数据存储格式
Snappy 一个用来压缩和解压缩的C++库

 

 

 

 

 

 

 

 

 

 

2、各依赖包编译安装

安装目录为:/home/yourname/local_install (yourname为用户名)
(没有安装在/usr或/usr/local下,而是安装在本地目录/home/yourname/local_install下,便于迁移)

1)ProtoBuffer
参考一书中介绍的是2.5.0版本的protobuf,但是安装后编译Caffe时出错,提示版本兼容性问题,查看了使用命令安装的protobuf的版本为2.6.1,因此找到了2.6.0版本的protobuf(2.6.1找不到)。

源码:protobuf-2.6.0.tar.gz
安装:
tar zvxf protobuf-2.6.0.tar.gz
cd protobuf-2.6.0
./configure --prefix=/home/yourname/local_install
make
make install

 

2)Boost

源码:boost_1_56_0.tar.gz
安装:
tar zvxf boost_1_56_0.tar.gz
cd boost_1_56_0
./bootstrap.sh --with-libraries=system,thread,python
./b2
cp -r boost/ /home/yourname/local_install/include
cp stage/lib/* /home/yourname/local_install/lib

 

3)GFLAGS
参考一书中介绍的是2.1.1版本的gflags,故下载了源码包gflags-2.1.1.zip,但是在cmake界面配置参数后无法生成配置文件,从而无法编译。这里直接git clone了gflags放在github上源码。

安装:
git clone https://github.com/gflags/gflags.git
cd gflags
mkdir build
cd build
cmake ..
ccmake ..
打开配置界面后,修改如下:
BUILD_SHARED_LIBS ON
CMAKE_INSTALL_PREFIX /home/yourname/local_install
make
make install

 

4)GLOG

源码:glog-0.3.3.tar.gz
安装:
tar xvzf glog-0.3.3.tar.gz
cd glog-0.3.3
./configure --prefix=/home/yourname/local_install
make
make install

 

5)BLAS

源码:OpenBLAS-0.2.14.tar.gz
安装:
tar xvzf OpenBLAS-0.2.14.tar.gz
cd OpenBLAS-0.2.14
make -j
make PREFIX=/home/yourname/local_install install

 

6)HDF5
参考一书中介绍的是1.8.9版本的hdf5,但是安装后编译Caffe时出错,提示”universal character names are only valid in C++ and C99”,因此找到了更高的1.8.17版本的hdf5。

源码:hdf5-1.8.9.tar.gz
安装:
tar xvzf hdf5-1.8.9.tar.gz
cd hdf5-1.8.9
./configure --prefix=/home/yourname/local_install
make -j
make install

 

7)LMDB

源码:lmdb-LMDB_0.9.21.tar.gz
安装:
tar xvzf lmdb-LMDB_0.9.21.tar.gz
cp lmdb.h /home/yourname/local_install/include
cp liblmdb.so /home/yourname/local_install/lib

 

8)LEVELDB

源码:leveldb-1.7.0.tar.gz
安装:
tar xvzf leveldb-1.7.0.tar.gz
cd leveldb-1.7.0
make
cp -r include/leveldb /home/yourname/local_install/include
cp libleveldb.so.* /home/yourname/local_install/lib

 

9)Snappy

源码:snappy-1.1.1.tar.gz
安装:
tar xvzf snappy-1.1.1.tar.gz
cd snappy-1.1.1
./configure --prefix=/home/yourname/local_install
make
make install

 

10)OpenCV

源码:opencv-3.0.0.zip
安装:
unzip opencv-3.0.0.zip
cd opencv-3.0.0
mkdir build
cd build
cmake ..
ccmake ..
打开配置界面后,修改如下:
CMAKE_INSTALL_PREFIX /home/yourname/local_install
make
make install
Note:由于没有安装在/usr或/usr/local下,需要做一些额外的配置
##让opencv的相关链接库被系统共享
sudo gedit /etc/ld.so.conf.d/opencv.conf
添加:/home/yourname/local_install/lib,保存
sudo ldconfig
##为程序指定openvc的头文件位置
sudo gedit /etc/bash.bashrc
在文件后添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/yourname/local_install/lib/pkgconfig
export PKG_CONFIG_PATH
保存退出,重新开启终端来使配置生效

 

经过以上10个步骤之后,将依赖从系统安装包切换到手动编译的依赖包,需要修改Caffe目录下的Makefile.config,找到如下几行:

INCLUDE_DIRS := /home/yourname/local_install/include $(PYTHON_INCLUDE) \
/usr/local/include
LIBRARY_DIRS := /home/yourname/local_install/lib $(PYTHON_LIB) \
/usr/local/lib /usr/lib

(将手动编译的依赖包路径放在系统路径前面,可保证先引用的是编译包而不是系统包)

 

在Caffe根目录下执行:

make clean
make -j

 

一般来讲编译不成功,因为安装3.0版本的OpenCV时需要在新版Caffe根目录下的Makefiel.config中增加编译选项(OPENCV_VERSION := 3)。

至此,编译会顺利通过,依赖环境配置成功。

posted @ 2017-10-27 18:52  wmxfd  阅读(277)  评论(0编辑  收藏  举报