前言:

历经一个国庆的折腾,终于成功在Ubuntu下搭建好了caffe,过程中遇到的坑真的是数不胜数,最大的一次坑是本来已经配置好了结果手残命令行一阵不知名命令之后电脑崩溃又得重装系统,结果装好系统再配置的时候出现了比第一次更多的坑,真是说多了都是泪,为了让大家避免我遇到的坑,特写此文章,希望能帮助到有的同学,同时说明本人目前是大二本科生,能力有限,文章中如有不正确的地方希望大家积极指出,本人不胜感谢,好了,废话不多说,进入正文!

目录结构

1:安装开发所需依赖包
2:下载安装CUDA8.0并验证是否安装成功
3:下载安装cudnn并验证是否安装成功
4:下载安装opencv并验证是否安装成功
5:安装编译caffe

特别说明:
1:本教程版本搭配为:Ubuntu16.04 CUDA8.0 Opencv3.1.0,建议初学者尽量按照本教程的搭配进行配置,防止出现版本不搭造成的错误,这一点笔者真是深有体会,当然鼓励大家尝试新版本,如果有成功的同仁麻烦告诉我你的搭配,笔者不胜感激。
2:建议大家在输入所有命令之前加上sudo,防止出现“权限不够”这类情况,笔者为了节省时间在教程里面有的需要加sudo的地方没有加,大家可不要偷懒~~
3:本文主要参考blog:http://blog.csdn.net/yhaolpz ,感谢大神博主的教程

安装开发所需依赖包

命令行直接复制粘贴进以下命令即可:

sudo apt-get install --no-install-recommends libboost-all-devsudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilersudo apt-get install libopenblas-dev liblapack-dev libatlas-base-devsudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-devsudo apt-get install git cmake build-essential

因为有一定的几率安装失败,而如果刚好某个依赖安装失败导致后期出现莫名的错误那你可就欲哭无泪了,安装完成之后建议大家验证一下是否安装成功,验证方法是再在终端输入一遍sudo apt-get install ..的命令,如图:

下载安装CUDA8.0并验证是否安装成功

下载安装CUDA8.0

NVIDIA官网提供两种方式来安装CUDA,即run安装和deb安装,这里不建议初学者使用run安装,因为run安装对Linix版本和Linix kernel版本以及GCC版本都有严格要求,稍有不符,可能就会导致失败,所以这里为大家介绍deb方式安装:

首先下载CUDA8.0的deb包(可去官网下,也可至笔者的网盘下载,网盘链接见文末),下载好之后依次键入以下命令:

    sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debsudo apt-get updatesudo apt-get install cuda

配置环境变量

命令:

sudo gedit /etc/profile

在文件最后加上

     PATH=/usr/local/cuda/bin:$PATH export PATHLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64 export LD_ LIBRARY_PATH

使用以下命令使其生效:

source /etc/profile

安装完成以后一定要重启电脑使其生效。

验证CUDA8.0是否安装成功

重启电脑之后请读者可依次键入以下命令验证CUDA8.0是否安装成功:

    cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuerysudo make./deviceQuery

如果看到类似以下信息就说明CUDA安装成功:

下载安装cudnn并验证是否安装成功

下载安装cudnn

读者可以登录官网: https://developer.nvidia.com/rdp/cudnn-download ,注册后下载 cudnn,笔者这里上传了我用的cudnn,下载链接见文末。

下载完成后解压,得到一个 cuda 文件夹,该文件夹下include 和 lib64 两个文件夹,命令行进入 cudn/include 路径下,然后进行以下操作:

sudo cp cudnn.h /usr/local/cuda/include/  #复制头文件

然后命令行进入 cudn/lib64 路径下,运行以下命令(注意:下面命令的..so.5.1.10和..so.5视个人的情况而定,如果你没有使用CUDN8.0以及其对应的cudnn版本,..so.后面的数字不一定与下面相同,读者可直接到你的文件目录下模糊查找对应的so版本):

sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接

验证cudnn是否安装成功

键入以下命令:

nvcc -V

如果出现类似以下内容则说明安装成功:

下载安装opencv并验证是否安装成功

下载安装opencv

读者可进入官网 : http://opencv.org/releases.html , 选择 3.1.0 版本的 source , 下载 opencv-3.1.0.zip ,也可至笔者的网盘下载,下载链接见文末,下载后解压至你想安装的目录,命令行进入已解压的文件夹 opencv-3.1.0 目录下,执行以下命令:

mkdir build # 创建编译的文件目录
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8  #编译

这里需要注意的是,在执行cmake…的时候会下载一个压缩包,下载的地址是被墙掉的,可能大家有的人给自己的chrome搭了梯子,但是因为是通过终端下载的,所以就算你的chrome可以上外网也不一定下的来(因为你的终端不一定可以翻过去),这就导致会报类似如下的错误:


解决方法是读者去网上自行找下好的包然后导入,但是网上大多都是要积分才能下载的,这里笔者上传我的包(其实我也是花积分下载的)免费给大家,也算是为人民服务哈哈,下载链接同样见文末,下载后直接把下载的压缩包放入 你的opencv目录/opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e下,然后再次执行cmake…就可以正常了。
编译成功后进行安装:

sudo make install

PS:
1:make 的时候可能会报错:

CMake Error at cuda_compile_generated_matrix_operations.cu.o.cmake:206 (message):
Error generating
/home/yy/opencv-2.4.9/build/modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.omake[2]: *** [modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o] 错误 1
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] 错误 2
make: *** [all] 错误 2

解决方案

sudo cmake -D CMAKE_BUILD_TYPE=bulid -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..

然后再make。

sudo make时,也可能出现

     make[2]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o] Error 1make[1]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/all] Error 2make: *** [all] Error 2

的错误。
那是因为 cuda-8.0与OpenCV 3.1.0发生了冲突。解决方法:修改openCV 3.1.0源码,使其兼容cuda-8.0

 sudo gedit opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp

将第四十五行位置的

    #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

改为

 #if !defined(HAVE_CUDA)||defined(CUDA_DISABLER)||(CUDART_VERSION>=8000)

然后重新执行make.

验证opencv安装是否成功

在终端输入以下命令:

pkg-config --modversion opencv

如果正常输出opencv版本则说明opencv安装成功。

下载配置编译caffe

下载caffe

首先在你要安装的路径下 clone :

git clone https://github.com/BVLC/caffe.git

配置caffe(这部分引自大神的blog)

进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config :

sudo cp Makefile.config.example Makefile.config

然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:

sudo gedit Makefile.config

修改 Makefile.config 文件内容:


#USE_CUDNN := 1
修改成:
USE_CUDNN := 1


#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3


#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 
修改为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serialLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

然后修改 caffe 目录下的 Makefile 文件:
将:

NVCCFLAGS  =-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

替换为:

NVCCFLAGS  = -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

将:

LIBRARIES  = glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

改为:

LIBRARIES  = glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

然后修改 /usr/local/cuda/include/host_config.h 文件 :

`#error-- unsupported GNU version! gcc versions later than 4.9 are not` supported!

改为

    //#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

编译caffe

键入以下命令:

make all -j8

这里的-j后面的参数试你电脑的配置决定
PS:后期有几位小伙伴按照上面的配置之后在make这里报错,贴出几个常见的报错信息及解决方案:
1:

error while loading shared libraries: libopencv_core.so.2.2: cannot open shared object file: No such file or directory

注:每个人的libopencv_core.so后面的数字不一样,但是大概是这个么个报错
解决方案1:这个错误可能是因为你没有装ffmpeg,输入

sudo apt-get install ffmpeg

安装,安装成功之后再执行make即可。
解决方案2:如果使用解决方案1无效,则:
在/usr/local/lib下搜索报错信息中的.so文件(比如示例报错信息就是搜索libopencv_core.so.2.2),如果找到该共享库的话,那么在/etc/ld.so.conf.d/xxxx.conf 注意(xxxx.conf)是你自己命名的。比如我缺少opencv库 那么我就写 opencv.conf。接下来,就在xxxx.conf文件中写path路径,比如说共享库在/usr/local/opencv/libopencv_core.so.2.4中的话,你就写 /usr/local/opencv/
最后 sudo ldconfig -v 如果有共享库输出的话,就证明成功了。
2:fatal error: hdf5.h
解决方案:
在Makefile.config文件中把下面第一行代码改为第二行代码:

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
1

在Makefile文件中把下面第一行代码改为第二行代码。

LIBRARIES  = glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
1
LIBRARIES  = glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
1

测试caffe

键入以下命令:

make runtest -j8

PS:这里可能会出现如下错误:

error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory

解决方案:

sudo ldconfig /usr/local/cuda/lib64

如果出现类似如下信息则说明caffe配置成功:

至此我们就完成caffe的配置工作了,希望大家可以积极指出本文的不足之处便于笔者改正,不胜感激,最后给出本文的所有资源大礼包,下载链接: https://pan.baidu.com/s/1pKU5hrX 密码: xk5x

Ubuntu16.04下配置caffe(亲测成功)相关推荐

  1. ubuntu16.04下配置caffe无GPU

    1. 安装依赖项  1 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5- ...

  2. vscode linux新建c语言,Ubuntu16.04下配置VScode的C/C++开发环境

    1. Vscode安装 Visual studio code是微软发布的一个运行于 Mac OS X.Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器.第一种 ...

  3. Linux安装svn服务器和权限配置_亲测成功

    Linux安装svn服务器和权限配置_亲测成功 SVN简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目 ...

  4. Ubuntu16.04下配置ORB-SLAM2与运行单目实例

    Ubuntu16.04下配置ORB-SLAM2与运行单目实例 一.安装相关工具 二.安装Pangolin 三.安装opencv 四.安装Eigen 五.安装ORB_SLAM2 六.安装usb_cam ...

  5. linux arm移远重启4g,如何在Ubuntu16.04下配置移远RM500工业模组(5G工业模组)

    如何在Ubuntu16.04下配置移远RM500工业模组(5G工业模组) 如何在Ubuntu16.04下配置移远RM500工业模组(5G工业模组) 最近由于工作原因入手了移远的5G(RM500H工业模 ...

  6. typora+picgo+smms图床配置(亲测成功)

    PicGo(app)设置smms图床(亲测成功) 文章目录 PicGo(app)设置smms图床(==亲测成功==) 1.PicGo软件下载安装 2.smms图床注册设置 1.PicGo软件下载安装 ...

  7. Ubuntu16.04 安装配置Caffe

    Caffe已经是第三次安装配置了,为什么是第三次呢?因为我实在是低估了深度学习对于硬件的要求.第一次我在自己笔记本上配置的单核,CPU only ...  结果是,样例数据跑了4小时,这还怎么玩?第二 ...

  8. Linux16.04下配置Caffe,Pycaffe,matcaffe

    Caffe – 一个基于C++编写的深度学习框架,由于其高效性和便捷性广泛应用于CV领域.它是由贾杨清在业余时间编写的一个框架,现在是由伯特利尔大学(BVLC)来进行维护和更新. 由于它出现的比较早, ...

  9. 如何在Ubuntu16.04下配置移远RM500工业模组(5G工业模组)

    最近由于工作原因入手了移远的5G(RM500H工业模组)通信开发板,由于手头上没有树莓派等原装Linux内核系统,又需要使用ROS,因此使用了Vmware虚拟机安装了Ubuntu16.04进行调试.最 ...

最新文章

  1. Ajax无刷新实现图片切换特效
  2. 专业程序员成长之路之基础基础!
  3. springmvc和tomcat原理
  4. python函数 一
  5. 信号量(一) 基础知识
  6. oracle 求时间差年,Oracle计算时间差常用函数
  7. SAP Spartacus 电商云 UI Shipping Method 在单元测试环境下没有显示的问题
  8. mysql数据库开发环境_MacOS下搭载开发环境之数据库篇(Mysql + Navicat)
  9. 【流媒體】Android 实时视频采集—Camera预览采集
  10. css 相同的css属性_CSS中的order属性
  11. 数据结构学习笔记(图)
  12. 全国夜间灯光指数数据、GDP密度分布、人口密度分布、土地利用数据、降雨量数据
  13. 【直播预告】阿里特邀专家关键:Java无锁集合代码分析...
  14. 低俗文章之傻傻分不清楚的IC和ID卡(手稿)
  15. 网页 flash swf 无法调用 摄像头 问题解决
  16. VC6连接Oracle10g
  17. 视频直播嵌入企业微信公众号的方法
  18. node之手写脚手架
  19. 原谅我没能像老公那样爱你
  20. Map array 和 array

热门文章

  1. VUE图片添加角标,图片右上角或左上角添加标识
  2. ios 渐变透明背景_安卓手机透明照玩法教程
  3. 稻壳首页模板index.php的建立
  4. 2022年版中国新能源公交车行业发展方向预测与投资规划建议报告
  5. BotVS开发基础—2.7 指标MA
  6. 2017多校第9场 HDU 6169 Senior PanⅡ 数论,DP,爆搜
  7. KaiwuDB 分布式数据库-介绍
  8. 自动驾驶模拟软件Carla---环境搭建和编译
  9. BZOJ1171: 大sz的游戏BZOJ2892: 强袭作战
  10. 武汉东湖高新区服务业“小进规”一次性入库奖励兑现资金收据认定时间、要求