在Ubuntu上编译安装caffe还是个比较蛋疼的事,有时候会莫名其妙的碰到很多库的问题,这篇文章就把我在Ubuntu上编译安装caffe的过程和遇到的问题大致记录一下。

1.安装opencv

http://machinelearninguru.com/computer_vision/installation/opencv/opencv.html

建议参考这篇文章,过程写得比较清晰

2.安装Matlab

因为我要用到matcaffe所以需要装matlab,这个过程可以参考:

http://blog.csdn.net/generallc/article/details/52793820

3.Python

建议安装anaconda,可以省很多事

4.一些依赖库安装

openblas:

  $ sudo apt update
$ apt search openblas
$ sudo apt install libopenblas-dev
$ sudo update-alternatives --config libblas.so.3
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

python 依赖库

cd /home/zzh/caffe/python
apt-get install python-pip
pip install --upgrade pip
for req in $(cat requirements.txt); do pip install $req; done

5.caffe编译

修改Makefile.config文件.

cd ~/caffe  //进入你的caffe目录
cp Makefile.config.example Makefile.config

我有用到gpu和opencv以及后面要matlab,所以我修改了下面这些:

USE_CUDNN:=1

USE_OPENCV:=1

MATLAB_DIR:=/home/liuhao/MATLAB/

python路径用的是anaconda的目录。

问题1: 这里需要修改一个地方,如果不改的话后面会碰到fatal error: hdf5.h:这个错误。

把INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include 后面加上 /usr/include/hdf5/serial
把LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib /usr/lib/x86_64-linux-gnu 后面加上/usr/lib/x86_64-linux-gnu/hdf5/serial

开始编译:

make all -j8

测试:

make runtest

python接口:

make pycaffe

Matlab接口:

make matcaffe
make mattest

6.可能遇到的问题

6.1 运行make mattest时可能会碰到下面这个错误:

MEX-file '/home/zzh/caffe/matlab/+caffe/private/caffe_.mexa64' 无效:

/usr/local/MATLAB/R2016b/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6:

version `GLIBCXX_3.4.21' not found (required by

/home/zzh/caffe/matlab/+caffe/private/caffe_.mexa64)

解决方式是将matlab的libstdc++.so.6链接到系统的库文件。

sudo rm /usr/local/MATLAB/R2016b/sys/os/glnxa64/libstdc++.so.6

sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/local/Matlab/R2016a/sys/os/glnxa64/libstdc++.so.6

6.2 No module named google.protobuf.internal

这个问题会在python 中import caffe时遇到

sudo apt-get install python-protobuf

pip install protobuf

/home/username/anaconda2/bin/pip install protobuf

我的是用第一条命令搞定了

6.3 Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.

这个也是在import caffe的时候碰到的。

conda install nomkl numpy scipy scikit-learn numexpr
conda remove mkl mkl-service

6.4 AttributeError: 'module' object has no attribute 'bool_'

这个就要把caffe/python目录加到系统路径里

export PYTHONPATH="/home/liuhao/framework/caffe/python:$PYTHONPATH"

可以把这个加到.bashrc里面

6.5 其他问题

Error 'fatal error: pyconfig.h: No such file or directory' when executing 'make pycaffe' on dev-branch

export CPLUS_INCLUDE_PATH=/usr/include/python2.7

中间还碰到过一个诡异问题,因为一个叫libharfbuzz.so.0的库弄得vim和桌面都挂了,解决的方式是重装了harfbuzz和freetype。可以参考 http://www.linuxfromscratch.org/blfs/view/svn/general/harfbuzz.html

还有个好像是cuda和gcc版本问题,直接注释/usr/include/host_config.h里面检测gcc版本的地方就可以了。

还有一些问题忘记了,具体再google吧一般都有人踩过的坑。

PS: 除了这种方式,还可以用cmake来装,这样就避免了手工去改Makefile.config文件。

10.27 update

支持多GPU要开启NCCL,

NCCL安装:

$ git clone https://github.com/NVIDIA/nccl.git

$ cd nccl

$ sudo make install -j4

在~/.bashrc中将NCCL加入

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/liuhao/framework/nccl/build/lib/"

遇到新问题:

caffe/proto/caffe.pb.h: No such file or directory

You need to generate caffe.pb.h manually using protoc as follows.

#In the directory you installed Caffe to
protoc src/caffe/proto/caffe.proto --cpp_out=.
mkdir include/caffe/proto
mv src/caffe/proto/caffe.pb.h include/caffe/proto

不过我是直接运行下面的命令可以了:

sudo apt-get remove libprotobuf-dev

Python.h找不到,config 文件里的python path检查一下

2017.11.1 update

error: /home/liuhao/anaconda2/lib/libpng16.so.16: undefined reference to `inflateValidate@ZLIB_1.2.9'

解决方式:自行编译zlib1.2.9

wget https://sourceforge.net/projects/libpng/files/zlib/1.2.9/
unzip xxx
cd xxx
./configure
make
sudo make install

欢迎关注公众号:vision_home 共同学习,不定期分享论文和资源

ubuntu16.04, Matlab2016b caffe编译安装的更多相关文章

  1. Ubuntu16.04 64位编译安装Hi3520D_SDK_V1.0.4.0

    1.复制uboot/tools/mkimage到环境变量路径 2.修改kernel/timeconst.pl,删除define 3.busybox makefile修改: /itc_work/hi35 ...

  2. ubuntu16.04源码编译安装nginx1.14.2

    1.下载nginx-1.14.2, 官网地址:nginx.org 2.解压nginx-1.14.2.tar.gz tar zxvf nginx-1.14.2.tar.gz 3.切到文件夹nginx-1 ...

  3. ubuntu16.04源码编译安装wine1.8.6安装不上引来的错误

    configure: libxcomposite 64-bit development files not found, Xcomposite won't be supported. configur ...

  4. [转]linux14.04下caffe的安装步骤

     linux14.04下caffe的安装步骤   原文地址:http://blog.csdn.net/xiaoyang19910623/article/details/52997481?locatio ...

  5. Ubuntu16.04下,erlang安装和rabbitmq安装步骤

    文章来源: Ubuntu16.04下,erlang安装和rabbitmq安装步骤 准备工作,先下载erlang和rabbitmq的安装包,注意他们的版本,版本不对可能会导致rabbitmq无法启动,这 ...

  6. Ubuntu16.04 LTS下apt安装WireShark

    Ubuntu16.04 LTS下apt安装WireShark 安装与配置 首先通过apt安装WireShark: $ sudo apt install wireshark 会同时安装许多的依赖包,其中 ...

  7. Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例

    Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例 一.在Eclipse下编译安装Hadoop插件 Hadoop的Eclipse插件现在已经没有二进制版直接提供,只能自己编译. ...

  8. 路由器安装ubuntu-16.04.1-server-amd64出现“无法安装busybox-initramfs”错误。向目标系统中安装busybox-initramfs软件包时出现一个错误。请检查/var/log/syslog或查看第四虚拟控制台以获得详细

    公司的路由器要ubuntu服务器进行路由网络功能的管理,在安装的时候出现下面的错误提示: 安装ubuntu-16.04.1-server-amd64出现“无法安装busybox-initramfs”错 ...

  9. ubuntu16.04下sublime text3安装和配置

    ubuntu16.04下sublime text3安装和配置 2018年04月20日 10:31:08 zhengqijun_ 阅读数:1482 1.安装方法 1)使用ppa安装 sudo add-a ...

随机推荐

  1. 201521123009 《Java程序设计》第9周学习总结

    1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 Q1:常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何 ...

  2. linux(CentOS5.8)环境下搭建Radius

    本文记录了freeRadius在CentOS5.8环境下的基本搭建过程,未涉及mysql的加入及配置 freeradius官方地址:http://freeradius.org/ 环境:CentOS5. ...

  3. ajax之XML简介

    XML:可扩展标记语言,传输数据 HTML:超文本标记语言,显示数据   XML:标签构成 特点: 1.标签名可以自定义 2.必须有一个根(有且只有一个) 3.有开始标签就必须有结束标签 4.大小写敏 ...

  4. Calico 的默认连通性 - 每天5分钟玩转 Docker 容器技术(69)

    前面我们完成了 Calico 网络的部署并运行了容器,今天将讨论 Calico 的连通性. 测试一下 bbox1 与 bbox2 的连通性: ping 成功,数据包流向如下图所示. ① 根据 bbox ...

  5. 再起航,我的学习笔记之JavaScript设计模式22(访问者模式)

    访问者模式 概念介绍 访问者模式(Visitor): 针对于对象结构中的元素,定义在不改变该对象的前提下访问结构中元素的新方法 解决低版本IE兼容性 我们来看下面这段代码,这段代码,我们封装了一个绑定 ...

  6. pygame 弹力球及其变速的实现

    期望: 1.球体接触到框体后反弹 2.设置速度按键,按下后改变球体速度.颜色状态 具体实现: import pygame from pygame.locals import * import sys, ...

  7. idea启动tomcat报错:Error during artifact deployment. See server log for details.

    出现这种情况的原因老夫猜想是改变了artifact然而tomcat的配置中的artifact没有重新配就会出现这种报错 打开tomcat配置 删除原来的artifact 新添加artifact 保存 ...

  8. Java的类加载器

    一.类加载器的概念 类加载器(class loader)用来加载 Java 类到 Java 虚拟机中.一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 ...

  9. [Tjoi2013]循环格

    [Tjoi2013]循环格 2014年3月18日1,7500 Description Input 第一行两个整数R,C.表示行和列,接下来R行,每行C个字符LRUD,表示左右上下. Output 一个 ...

  10. Oracle之 any 、some、all解析

    oracle之 any.some.all 解析 因为很少用到, 所以几乎忘记了这几个函数, 不过它们还是很有用的使用它们可以大大简化一些SQL文的语法, 至于效率问题, 如CCW所说它们和EXISTS ...