prptpbuf的坑差不多填了我一天半的时间吧....简直了。。
报错如下:
在函数‘caffe::UpgradeV0LayerParameter(caffe::V1LayerParameter const&, caffe::V1LayerParameter*)’中:
upgrade_proto.cpp:(.text+0xac2):对‘google::protobuf::internal::kEmptyString[abi:cxx11]’未定义的引用
百度之就是protobuf的问题了。
首先我找到了知乎protobuf版本问题上的方法,说是自己在caffe下的makefile里指定好你使用的protobuf版本路径(因为这个bug我手动重装了一个2.50版本的protobuf,可参考:手动安装protobuf2.5.0),并且把之前各种比较混乱的(比如装了anaconda或者tensorflow之类的话,你就会发现你的protobuf特别乱...)protobuf都uninstall了... 但是,还是不好使啊......
然后,各种百度谷歌尝试路径修改之类的,终于看到了这篇:protobuf解决之干掉anaconda路径
很关键,解决方案在文末,就是把anaconda的python环境变量设置先屏蔽一下下....make完caffe再可以改回来的~
好的,我把这最后的方案试了一遍,还是不行啊.....简直气死了.....
最后呢,我差点想把caffe remove掉流程重新来一遍了.....因为太乱了.......
然后就:
cmake -D CMAKE_BUILD_TYPE=Release -D BLAS=Open -D BUILD_SHARED_LIBS=Off ..
这一句重新生成release下的文件的。。。然而我却发现这里居然显示报错,,,这就神奇了,看了下里面的一个makefilerr.log(具体名字忘了)的一个文件,嗯很多行的错误。。所以,感觉应该是这里就bug了.
好的,于是,重点来了,
1. 把release下的文件全部删掉;
2. 把anaconda的python环境变量设置暂时屏蔽掉:
sudo gedit .bashrc
3. 好了可以开始编译caffe了......(这里我的makefile是这样的,因为自己手动重装了个protobuf2.5.0)
cd /path to caffe/Release/
make -j8 #j8加快编译速度
make install
ok,问题终于解决了~~~
不放心的话,用个例子测试下吧:mnist caffe测试
结果:
运行很快,有gpu+cudnn的话~
这里补充几个查看protobuf版本信息之类的命令:
查看哪些路径安装了protoc:
whereis protoc
查看默认调用的protoc是哪个:
which protoc
查看默认的protoc的版本:
protoc --version
查看pip安装的protoc的信息:(我的话就显示我在anaconda下的3.5+的版本了)
pip show protobuf
欢迎大家指正讨论and补充~~~!!!
20180927更新:
最近在尝试caffe跑跑faster rcnn,又遇到以上的protobuf问题了....神奇的是protobuf2.50不好使啊.....怪我自己盲目自信的认为版本没问题了啊,装对了啊......然而,这个问题一直到晚上还是存在.....无奈还是重装了2.6.1版本的....ok就没问题了~