ubuntu18.04 源码编译caffe (仅cpu) 中遇到的问题

ubuntu18.04 源码编译caffe (仅cpu) 中遇到的问题

本人安装的各软件版本:

系统:ubuntu18.04

protobuf: 2.6.1

python: 2.7

torch: 0.4.1

一、官方安装教程

在ubuntu上安装caffe有基于命令的一键安装Caffe | Installation: Ubuntu (berkeleyvision.org),也有基于源码编译的安装Caffe | Installation (berkeleyvision.org)。如果只是学习caffe, 可以深度一键安装,如果需要修改源码,那只能选择从源码编译。因为个人需要将darknet的yolov3模型转换成caffe模型,需要在caffe模型框架中添加一些算子层,所以只能选择源码编译caffe了,这一编就编了将近一周的时间。

二、网上参考教程

编译过程主要参考Ubuntu 16.04上安装Caffe(CPU only)_Linux教程_Linux公社-Linux系统门户网站 (linuxidc.com)  作者写得很详细,按着步骤来应该不会有太大问题。我一开始在网上搜索,搜到的很多,但完全走通的很少。每个人在不同的硬件设备上编译,总会遇到各种各样的问题。

三、protobuf的问题

这里说一下我遇到的问题,主要是protobuf相关的,比如 error while loading shared libraries: libprotoc.so.19: cannot open shared object file: No such file or directory. 如下图。这个问题应该是没有找到protoc的库。

再比如undefined reference to 'google::protobuf::.......' 类似的一大堆问题,如下图所示。这个问题真正的原因我也不知道。或者是版本不对,或许是链接库路径不对。

protobuf的问题困扰了我三天,网上查到的原因大概有几个:

1)安装的protobuf版本与caffe所需要的不一致(我也不知道caffe需要哪个版本)。

2)安装了多个版本的protobuf, 编译caffe的时候用的不是正确的版本。

3)protobuf的路径没有配置对。

我的解决方法是(参考https://blog.csdn.net/muyeluo123/article/details/100920848):

1)卸载了以前安装的protobuf,包括用pip安装的

2) 下载老版本的protobuf源码, 我下载的是2.6.1版本

3)进行编译安装:

3.1)解压之后进入文件夹

3.2)修改./autogen.sh文件
       

3.3)bash ./autogen.sh
       3.4)./configure prefix=/username/path
                ** prefix可以将protobuf安装到指定的位置,这里如果指定了路径,要记下来,当然也可以不指定路径,默认路径是/usr/local/bin

3.5)make 

3.6) make check

3.7) sudo make install

3.8) sudo ldconfig

4)安装完成后查看相应信息

这样protobuf就安装好了。为了更明确的指定编译caffe时protoc的路径,修改caffe目录下的Makefile文件,将protoc的路径写进去。注意:如果你在上面3.4中指定了protoc的安装路径 ,在Makefile中请修改成你自己的protoc路径。

四、编译caffe

参考:Ubuntu 16.04上安装Caffe(CPU only)_Linux教程_Linux公社-Linux系统门户网站 (linuxidc.com) 流程进行编译安装。注意在安装依赖时,不要再安装protobuf相关的依赖库了,因为在第三步我们已经从源码安装了protobuf。

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

sudo apt-get install libhdf5-serial-dev

 

PS:如果顺利,你应该已经编译成功了。但很不幸,我并没有那么顺利,其实我用源码安装了protobuf2.6.1之后,undefined reference to 'google::protobuf::.......'问题还是没有解决。后来不知道在哪篇文章里看到了说在caffe目录下用 “cmake ./ ”命令检查一下,然后我执行了这个命令后,发现Makefile文件被改写掉了,神奇的是make all终于执行成功了。但是make pycaffe却一直编译不过,无奈,我又找回原来的Makefile,修改里面protoc的目录,修改LIBRARIES, 然后make clean, make pycaffe, 这一次竟然成功了。说实话,我也不知道开始到底是什么原因一直编译不通过的,后来又是怎么通过的。我对linux系统不熟悉,如果有哪位大神知道原因,还望不吝赐教。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值