ubuntu16.04 编译 caffe

#ubuntu16.04 编译 caffe

经过三天多的尝试终于将caffe编译好了,最开始我用的ubuntu18.04,但是后来换成了ubuntu16.04。

我的环境
ubuntu16.04
cuda9.0
cudnn7.1.3
opencv3.4.1
python2.7
先装cuda和cudnn,再装opencv,python的话系统应该自带的
cuda,cudnn安装可以看我前一篇
opencv下载链接,这个下的快
下面编译caffe
教程链接
教程链接
这里面有个容易错的地方
再修改/usr/local/cuda/include/host_config.h这里
如果你的gcc大于里面的4.9你就改,否则别改
我的host_config文件里是6.0,我的gcc是5.4,所以我不用改

#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!

列一下我遇到的报错
第一个错

/usr/bin/ld: 找不到 -lhdf5_hl
/usr/bin/ld: 找不到 -lhdf5
collect2: error: ld returned 1 exit status

# or 
/usr/bin/ld: cannot find -lhdf5_hl
/usr/bin/ld: cannot find -lhdf5
collect2: error: ld returned 1 exit status

网上说改makefile文件,其实是有两个地方要改
第一处

#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

第二处
搜索LIBRARIES关键字把这里改过来,我就是忘了改这里

ifeq ($(USE_HDF5), 1)
	LIBRARIES += hdf5_serial_hl hdf5_serial

第二个错
出现cv:imread和cv::vector等一堆opencv的函数未定义

.build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用

将Makefile.config中OPENCV_VERSION := 3取消注释
或者
把opencv需要的lib添加到Makefile文件中,找到LIBRARIES(在PYTHON_LIBRARIES := boost_python python2.7 前一行)并修改为:

LIBRARIES += glog gflags protobuf leveldb snappy  lmdb boost_system hdf5_hl hdf5 m        opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs

第三个错
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录

解决方法:
sudo apt-get install python-numpy
我默认的时python2,他在python2里安装了numpy
你是python3的话,自己改吧

我的总结,编译caffe要搭配好环境,比如我之前用18.04就很多报错,还有cuda,cudnn的选择,最后要理解makefile.config和makefile文件里的内容,会很有帮助。

第四个错
编译时遇到缺少 leveldb
下载一个 leveldb 编译一下就好了
需要注意的是,在编译leveldb时遇到在 benchmark 和 googletest 里找不到CMakeFile.txt
因为你clone leveldb 时,这俩文件夹里是空的,你得自己去GitHub clone下来
地址在这
教程链接
教程链接

第五个错
编译时缺少 lmdb.h
fatal error: lmdb.h: No such file or directory
依赖没装好,装一下就好了

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

第六个错

LD -o .build_release/lib/libcaffe.so.1.0.0
/usr/bin/ld: cannot find -lleveldb
/usr/bin/ld: cannot find -lsnappy
/usr/bin/ld: cannot find -lleveldb
/usr/bin/ld: cannot find -lsnappy
collect2: error: ld returned 1 exit status
Makefile:582: recipe for target '.build_release/lib/libcaffe.so.1.0.0' failed

安装这俩

$ apt-get install libsnappy-dev

$ apt-get install libleveldb-dev
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值