最好的方案,安装和编译caffe时不会出现问题:
https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/88756053
问题1:./include/caffe/util/cudnn.hpp:8:34: fatal error: caffe/proto/caffe.pb.h: 解决方法
caffe.pb.h丢失问题
解决方法:
用protoc从caffe/src/caffe/proto/caffe.proto生成caffe.pb.h和caffe.pb.cc
cd /home/zqzy/caffe-master-py2/src/caffe/proto/
protoc --cpp_out=/home/zqzy/caffe-master-py2/src/caffe/proto/ caffe.proto
注意:caffe.proto前面有空格
参考:https://blog.csdn.net/u012759006/article/details/82496237
https://blog.csdn.net/u010167269/article/details/50703923
问题2:.build_release/src/caffe/proto/caffe.pb.h:17:2: error: #error This file was generated by an older version of protoc which is
w
我将/home/zqzy/anaconda2/bin 中的protoc 拷贝到了 /usr/bin 中了,这就没有报错了
原因:
在terminal中运行 :sudo protoc --version
会显示当前版本是2.6.1,
运行:protoc --version
就会显示版本是3.2.0
由于我的/home/zqzy/anaconda2/bin中有合适的版本,所以我是打算直接用这里的protobuf,通过查资料,了解到sudo的时候,默认的环境变量在/etc/sudoers文件中,一般来说sudo会重置$PATH,而sudoers文件有这样一行
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
所以 sudo的时候$PATH就是从这里读取,因此我只需添加我的路径就可以了,注意要把路径添加在其他版本路径的前面,位置决定了读取顺序。
修改 /etc 下的sudoers文件:
执行命令: sudo gedit /etc/sudoers
将
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
修改为:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/home/zqzy/anaconda2/bin:/usr/sbin:/usr/bin:/sbin:/bin"
注意sudoers文件很重要,修改前记得备份
secure_path是即时生效的,这时候再次运行sudo使用的版本就变成了我需要的3.2.0版本。
参考:https://blog.csdn.net/elysion122/article/details/64523339/
问题3:.undefined reference to `google::protobuf::MessageLite
解决方法:
这个还没解决,试了很多方法,都不行,最后是在python2的基础上进行安装caffe,这就成功了。
详情见:https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/88756053