我一直试图在Ubuntu16.04中编译Matcaffe。我可以成功地编译caffe和pycaffe (使用gcc 5)。但是,由于Ubuntu16.04附带了gcc 5,而MATLAB R2016b与gcc 4.9兼容,我在编译过程中收到了以下警告(使用matcafee):
MEX matlab/+caffe/private/caffe_..cpp大楼,带有“g++”。警告:您正在使用gcc版本的“5.4.0”。gcc的说法不被支持。MEX目前支持的版本是“4.9.x”。有关当前支持的编译器的列表,请参阅:release。成功完成了。
即使创建了MEX文件,我也无法从MATLAB中使用它,因为它不识别它们。
为了解决这个问题,我安装了gcc 4.9和g++ 4.9,并更新了符号链接以使用它们。当我试图编译matcaffe时,会收到以下错误消息:
MEX matlab/+caffe/private/caffe_..cpp带“g++”的建筑物。/tmp/mex_286607035953408_13265/caffe_.o:在函数caffe::Net::CopyTrainedLayersFrom(std::string)‘/tmp/tmp/mex_286607035953408_13265/caffe_o中:
get_net(int, mxArray_tag**, int, mxArray_tag const**)': caffe_.cpp:(.text+0x182b): undefined reference tocaffe::Net::Net(std:string const&,caffe::Phase,int,std:net_copy_from(int, mxArray_tag**, int, mxArray_tag const**)': caffe_.cpp:(.text+0x167d): undefined reference to> const*,caffe:Net const*)/tmp/mex_286607035953408_13265/caffe_o: Inget_solver(int, mxArray_tag**, int, mxArray_tag const**)': caffe_.cpp:(.text+0x343f): undefined reference tocaffe::ReadSolverParamsFromTextFileOrDie(std::string const&,google::base::CheckOpMessageBuilder::NewString()‘/tmp/mex_286607035953408_13265/caffe_.o:函数std::string* google::MakeCheckOpString<int, int>(int const&, int const&, char const*)': caffe_.cpp:(.text._ZN6google17MakeCheckOpStringIiiEEPSsRKT_RKT0_PKc[_ZN6google17MakeCheckOpStringIiiEEPSsRKT_RKT0_PKc]+0x42): undefined reference to中的std::string* google::MakeCheckOpString<int, int>(int const&, int const&, char const*)': caffe_.cpp:(.text._ZN6google17MakeCheckOpStringIiiEEPSsRKT_RKT0_PKc[_ZN6google17MakeCheckOpStringIiiEEPSsRKT_RKT0_PKc]+0x42): undefined reference to/tmp/mex_286607035953408_13265/caffe_.o:std::string* google::MakeCheckOpString<unsigned long, int>(unsigned long const&, int const&, char const*)': caffe_.cpp:(.text._ZN6google17MakeCheckOpStringImiEEPSsRKT_RKT0_PKc[_ZN6google17MakeCheckOpStringImiEEPSsRKT_RKT0_PKc]+0x42): undefined reference tostd::string* google::MakeCheckOpString<unsigned long, int>(unsigned long const&, int const&, char const*)': caffe_.cpp:(.text._ZN6google17MakeCheckOpStringImiEEPSsRKT_RKT0_PKc[_ZN6google17MakeCheckOpStringImiEEPSsRKT_RKT0_PKc]+0x42): undefined reference tocollect2: collect2: ld返回一个退出状态。 Makefile:511:目标‘matlab/+caffe/private/caffe_.make 64’失败的配方:*matlab/+caffe/private/caffe_.make 64错误255
有人在Ubuntu16.04上成功地编译了Matcaffe吗?我也用MATLAB R2014b和gcc 4.7尝试了同样的程序,但没有成功。
发布于 2016-11-22 09:01:45
Caffe是针对libstdc++和opencv的系统版本编译的,但是在运行matcaffe时链接到matlab版本。我用附加的方法解决了这件事
export LD_PRELOAD=${LD_PRELOAD}:/usr/local/x86_64-linux-gnu/libstdc++.so.6在构建~/.bashrc时禁用opencv (在Makefile.config中取消注释)。
https://stackoverflow.com/questions/40344500
复制相似问题