继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

caffe linux下编译bug汇总

2018-12-01 15:18:526157浏览

会写代码的好厨师

3实战 · 19手记 · 3推荐
TA的实战


  1. 安装CUDA的时候不安装显卡驱动;

  2. 最后安装好caffe,运行程序时,将相关配置文件改为CPU运行模式,而不是GPU运行模式。

首先,先安装一个git,在这之前要进行依赖源的更新

$sudo apt-get update

然后进行git的安装(可以使用git --version对是否安装了git进行查看)

$sudo apt-get install git

接着进行依赖源的安装

$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 libatlas-base-dev


接下来,跟着这个博客无闹apt!!!装装装

https://blog.csdn.net/Zmoudong/article/details/77914395



需要安装的东西:

snappy

Snappy 是一个 C++
的用来压缩和解压缩的开发包。其目标不是最大限度压缩或者兼容其他压缩格式,而是旨在提供高速压缩速度和合理的压缩率。Snappy 比 zlib
更快,但文件相对要大 20% 到 100%。在 64位模式的 Core i7 处理器上,可达每秒 250~500兆的压缩速度。

leveldb

Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法.

gflags

gflags是google的一个开源的处理命令行参数的库,使用c++开发,具备python接口,可以替代getopt。

gflags使用起来比getopt方便,但是不支持参数的简写。

glog

Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。

szip

szip是一个快速,优良,跨平台的开源数据压缩程序。

lmdb

lmdb是openLDAP项目开发的嵌入式(作为一个库嵌入到宿主程序)存储引擎。

hdf5

Hierarchical Data Format(HDF),可以存储不同类型的图像和数码数据的文件格式,并且可以在不同类型的机器上传输,同时还有统一处理这种文件格式的函数库。大多数普通计算机都支持这种文件格式。

opencv

OpenCV的全称是:Open Source Computer Vision
Library。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac
OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++
类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python, Java and
MATLAB/OCTAVE (版本2.5)的接口。这些语言的API接口函数可以通过在线文档获得。如今也提供对于C#,Ch, Ruby的支持。

protobuf

protocolbuffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google
提供了多种语言的实现:java、c#、c++、go 和
python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml
进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

Boost

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。


好了在编译的时候,你可能会遇到的问题!!

  • 安装protobuf

PROTOC src/caffe/proto/caffe.proto

make: protoc: Command not found

Makefile:638: recipe for target '.build_release/src/caffe/proto/caffe.pb.cc' failed

make: *** [.build_release/src/caffe/proto/http://caffe.pb.cc] Error 127

...........

下载安装:https://github.com/google/protobuf/releases/tag/v2.5.0


./autogen.sh: 4: ./autogen.sh: autoreconf: not found

上网查了查说是我的版本没有安装automake工具。解决方法如下

先后执行命令:

1.  sudo apt-get install autoconf

2.  sudo apt-get install automake

3.sudo apt-get install libtool

再次执行OK了。

./autogen.sh
./configure
make -j 24
sudo make install

  • 安装glog和gflags

    https://www.cnblogs.com/burningTheStar/p/6986048.html

  • 安装hdf5


    https://blog.csdn.net/luoying_1993/article/details/53228473

“fatal error: hdf5.h: 没有那个文件或目录”解决方法

参考自http://blog.csdn.net/hongye000000/article/details/51043913

Step 1

Makefile.config文件的第85行,添加/usr/include/hdf5/serial/INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。

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

Step 2

Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hlhdf5_serial,也就是把下面第一行代码改为第二行代码。

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


NVCC src/caffe/layers/hdf5_output_layer.cu

nvcc fatal   : Unsupported gpu architecture 'compute_20'

Makefile:594: recipe for target '.build_release/cuda/src/caffe/layers/hdf5_output_layer.o' failed

make: *** [.build_release/cuda/src/caffe/layers/hdf5_output_layer.o] Error 1

注释掉:

-gencode arch=compute_20,code=sm_20 \

-gencode arch=compute_20,code=sm_21


错误类型

LD -o .build_release/lib/libcaffe.so

/usr/bin/ld:/usr/local/lib/libgflags.a(gflags.cc.o):
relocation R_X86_64_32S against`.rodata' can not be used when making a
shared object; recompile with -fPIC

/usr/local/lib/libgflags.a: error addingsymbols: Bad value

collect2: error: ld returned 1 exit status

make: *** [.build_release/lib/libcaffe.so]Error 1

解决:


<img src="https://pic3.zhimg.com/v2-6c791802ec66b4a1b053baa8cf063cbe_b.jpg" data-caption="" data-size="normal" data-rawwidth="451" data-rawheight="101" class="origin_image zh-lightbox-thumb" width="451" data-original="https://pic3.zhimg.com/v2-6c791802ec66b4a1b053baa8cf063cbe_r.jpg">5c0233f500011ae504510101.jpg

这东西真的是每次编译都会遇到各种问题,心累。

·················································

欢迎关注课程:

深度学习之目标检测常用算法原理+实践精讲




打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP

热门评论

老师您好  我编译caffe出现这个问题是什么原因啊

 #error This file requires compiler and library support for the \
  ^
In file included from ./include/caffe/util/math_functions.hpp:11:0,
                 from ./include/caffe/layer.hpp:12,
                 from ./include/caffe/net.hpp:12,
                 from ./include/caffe/solver.hpp:7,
                 from src/caffe/solver.cpp:7:
./include/caffe/util/mkl_alternate.hpp:14:19: fatal error: cblas.h: 没有那个文件或目录
 #include <cblas.h>
                   ^
compilation terminated.
Makefile:591: recipe for target '.build_release/src/caffe/solver.o' failed
make: *** [.build_release/src/caffe/solver.o] Error 1

查看全部评论