前面的文章使用的软件环境是开始时通过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..tar.gz
安装:
tar zvxf protobuf-2.6..tar.gz
cd protobuf-2.6.
./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..tar.gz
安装:
tar xvzf glog-0.3..tar.gz
cd glog-0.3.
./configure --prefix=/home/yourname/local_install
make
make install

5)BLAS

源码:OpenBLAS-0.2..tar.gz
安装:
tar xvzf OpenBLAS-0.2..tar.gz
cd OpenBLAS-0.2.
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..tar.gz
安装:
tar xvzf hdf5-1.8..tar.gz
cd hdf5-1.8.
./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..tar.gz
安装:
tar xvzf leveldb-1.7..tar.gz
cd leveldb-1.7.
make
cp -r include/leveldb /home/yourname/local_install/include
cp libleveldb.so.* /home/yourname/local_install/lib

9)Snappy

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

10)OpenCV

源码:opencv-3.0..zip
安装:
unzip opencv-3.0..zip
cd opencv-3.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)。

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

Caffe实战三(依赖包解析及环境配置)的更多相关文章

  1. 【Mac + Appium + Python3.6学习(三)】之IOS自动化测试环境配置

    在做这一节之前先配置我的另一篇文章所需要安装的前提准备条件:<[Mac + Appium学习(一)]之安装Appium环境前提准备> 一.安装IOS自动化测试环境 配置环境: Appium ...

  2. 带依赖包的maven打包配置

    转载自:http://outofmemory.cn/code-snippet/2594/carry-yilai-bao-maven-dabao-configuration 可以在maven的packa ...

  3. 【移动自动化】【一】环境依赖:android sdk 环境配置(windows + linux)

    Android自动化前提依赖 android sdk 模拟器: mumu模拟器, 逍遥模拟器 真机 windows 环境下Android SDK 配置 配置java环境 去官网下载jdk http:/ ...

  4. Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(二)--node解析与环境搭建

    前言 本来开始写博客的时候只是想写一下关于MongoDB的使用总结的,后来觉得还不如干脆写一个node项目实战教程实战.写教程一方面在自己写的过程中需要考虑更多的东西,另一方面希望能对node入门者有 ...

  5. Java开发学习(三十二)----Maven多环境配置切换与跳过测试的三种方式

    一.多环境开发 我们平常都是在自己的开发环境进行开发, 当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用, 等测试人员测试通过后,我们会将项目部署到生成环境上线使用. 这个时候就有一 ...

  6. [Caffe]Win10+VS2015+CUDA8.0+cudnn5.1环境配置

    百度:win10 caffe vs2015 编译caffe.sln工程参见->这里 caffe训练参见->这里 参见->这里 Windows+VS2013爆详细Caffe编译安装教程

  7. 《python3网络爬虫开发实战》第一章、开发环境配置-问题汇总

    开发环境: VMware虚拟机 Ubuntu18.04 python3.6 (由于对vi操作水平有限,所以大部分都用的gedit进行文件编辑) 换源: 刚装上系统后换了好几个源,就清华源感觉好使点,别 ...

  8. 【源码解析】自动配置的这些细节不知道,别说你会 springboot

    spring-boot 相对于 spring,很重要的一个特点就是自动配置,使约定大于配置思想成功落地.xxx-spring-boot-starter 一系列引导器能够开箱即用,或者只需要很少的配置( ...

  9. Spring多开发环境配置

    在项目开发中,多环境的的配置可以方便在不同环境的切换,减少错误的产生 一.properties文件的多环境配置 properties文件可以根据不同的后缀来区分不同的环境 application.pr ...

随机推荐

  1. linux 标准i2c接口(一)

    一:I2C设备操作方式: 1.  应用程序操作法:i2c的设备的驱动可以直接利用linux内核提供的i2c-dev.c文件提供的ioctl函数接口在应用层实现对i2c设备的读写,但是在应用层使用ioc ...

  2. 【 D3.js 进阶系列 — 1.2 】 读取 CSV 文件时乱码的解决方法

    在 D3 中使用 d3.csv 读取 CSV 文件时,有时会出现乱码问题. 怎么解决呢? 1. 乱码问题 使用 d3.csv 读取 xxx.csv 文件时.假设 xxx.csv 文件使用的是 UTF- ...

  3. 文件管理中心iOS版简介

    App Store地址:https://itunes.apple.com/cn/app/id1023365565?mt=8 文件管理中心-装机必备的文件管家,专业的rar-zip 解压工具,局域网看片 ...

  4. HDU 4821 String 字符串hash

    String Problem Description   Given a string S and two integers L and M, we consider a substring of S ...

  5. 6.游戏特别离不开脚本(4)-应该避免将集合框架对象传给JS

    java map  传给 javascript 不是自动关联的,最好别传啊,遍历起来也麻烦(尽量避开集合框架吧),用数组或者自建一个对象.这里虽然有种方法: // build a Map Map< ...

  6. object equal

    package equals; public class EqualsTest { public static void main(String[] args) { Employee alice1 = ...

  7. redis13-----配置文件

    ==配置文件全解=== ==基本配置 daemonize no 是否以后台进程启动 databases 创建database的数量(默认选中的是database ) #刷新快照到硬盘中,必须满足两者要 ...

  8. atomic_cmpxchg()/Atomic_read()/Atomic_set()/Atomic_add()/Atomic_sub()/atomi

    [ 1.atomic_read与atomic_set函数是原子变量的操作,就是原子读和原子设置的作用.2.原子操作,就是执行操作的时候,其数值不会被其它线程或者中断所影响3.原子操作是linux内核中 ...

  9. Spring Boot2.0+Redis+Ehcache实现二级缓存

    EHCache 本地缓存 Redis 分布式缓存(可以共享) 一级 Redis 二级Ehcache    当redis挂了 有备胎 反之: 先走本地,本地没有再走网络  尽量少走Redis  效率会高 ...

  10. 用于JS日期格式化,以及简单运算的Date包装工具类

    1. [文件] yDate.js/** * | yDate.js | Copyright (c) 2013 yao.yl | email: redrainyi@126.com | Date: 2012 ...