ubuntu16.04, Matlab2016b caffe编译安装
在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编译安装的更多相关文章
- Ubuntu16.04 64位编译安装Hi3520D_SDK_V1.0.4.0
1.复制uboot/tools/mkimage到环境变量路径 2.修改kernel/timeconst.pl,删除define 3.busybox makefile修改: /itc_work/hi35 ...
- 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 ...
- ubuntu16.04源码编译安装wine1.8.6安装不上引来的错误
configure: libxcomposite 64-bit development files not found, Xcomposite won't be supported. configur ...
- [转]linux14.04下caffe的安装步骤
linux14.04下caffe的安装步骤 原文地址:http://blog.csdn.net/xiaoyang19910623/article/details/52997481?locatio ...
- Ubuntu16.04下,erlang安装和rabbitmq安装步骤
文章来源: Ubuntu16.04下,erlang安装和rabbitmq安装步骤 准备工作,先下载erlang和rabbitmq的安装包,注意他们的版本,版本不对可能会导致rabbitmq无法启动,这 ...
- Ubuntu16.04 LTS下apt安装WireShark
Ubuntu16.04 LTS下apt安装WireShark 安装与配置 首先通过apt安装WireShark: $ sudo apt install wireshark 会同时安装许多的依赖包,其中 ...
- Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例
Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例 一.在Eclipse下编译安装Hadoop插件 Hadoop的Eclipse插件现在已经没有二进制版直接提供,只能自己编译. ...
- 路由器安装ubuntu-16.04.1-server-amd64出现“无法安装busybox-initramfs”错误。向目标系统中安装busybox-initramfs软件包时出现一个错误。请检查/var/log/syslog或查看第四虚拟控制台以获得详细
公司的路由器要ubuntu服务器进行路由网络功能的管理,在安装的时候出现下面的错误提示: 安装ubuntu-16.04.1-server-amd64出现“无法安装busybox-initramfs”错 ...
- ubuntu16.04下sublime text3安装和配置
ubuntu16.04下sublime text3安装和配置 2018年04月20日 10:31:08 zhengqijun_ 阅读数:1482 1.安装方法 1)使用ppa安装 sudo add-a ...
随机推荐
- 201521123019 《Java程序设计》第11周学习总结
1. 本章学习总结 2. 书面作业 Q1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1除了使用synchronized修饰方法实现互斥同步访问,还有什么办法实现互斥同步访 ...
- 201521123001《Java程序设计》第11周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...
- 201521123026《JAVA程序设计》第14周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...
- 【Socket编程】通过Socket实现UDP编程
通过Socket实现UDP编程 UDP通信: 1.UDP协议(用户数据报协议)是无连接.不可靠.无序的. 2.UDP协议以数据报作为数据传输的载体. 3.使用UDP进行数据传输时,首先需要将要传输的数 ...
- lintcode.22 平面列表
平面列表 描述 笔记 数据 评测 给定一个列表,该列表中的每个要素要么是个列表,要么是整数.将其变成一个只包含整数的简单列表. 注意事项 如果给定的列表中的要素本身也是一个列表,那么它也可以包含 ...
- Spring第六篇【Spring AOP模块】
前言 Spring的第五篇也算是AOP编程的开山篇了,主要讲解了代理模式-..本博文主要讲解Spring的AOP模块:注解方式和XML方式实现AOP编程.切入点表达式.. AOP的概述 Aop: as ...
- Hibernate第五篇【inverse、cascade属性详解】
前言 上一篇博文已经讲解了一对多和多对一之间的关系了,一对多和多对一存在着关联关系(外键与主键的关系).本博文主要讲解Inverse属性.cascade属性.这两个属性对关联关系都有影响 Invers ...
- Linux下Birt、JTreeChart中文乱码问题解决办法
Linux下JTreeChart,Birt等报表工具显示中文乱码解决 1) 现象: 在Windows上生成的报表图片展示正常,但是在Linux上显示(怪异的小方块“口”): 2)问题定位: 这是lin ...
- MyBatis学习(六)MyBatis关联映射之一对多映射
数据库中一对多通常使用主外键关联,外键应该在多方,即多方维护关系. 下面举一个简单实例来看看MyBatis怎么处理一对多的关系. 1.创建一个项目,导入所需jar包,导入db.properties配置 ...
- 三大修饰符static,final,abstract,接口和抽象类的区别
package com.cityhero.test; public class ThreeModifier { //static静态的 // 概念:static可以修饰方法和属性,被static修的方 ...