我一直在尝试在 Ubuntu 16.04 中编译 Matcaffe。我可以成功编译 caffe 和 pycaffe(使用 gcc 5)。但是,由于 Ubuntu 16.04 带有 gcc 5,并且 MATLAB R2016b 与 gcc 4.9 兼容,因此在编译期间我收到了以下警告(使用make matcafee):
MEX matlab/+caffe/private/caffe_.cpp 使用“g++”构建。警告:您使用的是 gcc 版本“5.4.0”。不支持 gcc 的版本。MEX 当前支持的版本是“4.9.x”。有关当前支持的编译器的列表,请参见: http: //www.mathworks.com/support/compilers/current_release。MEX 成功完成。
即使创建了 MEX 文件,我也无法在 MATLAB 中使用它,因为它无法识别它们。
为了解决这个问题,我安装了 gcc 4.9 和 g++ 4.9 并更新了符号链接以使用它们。当我尝试编译 matcaffe 时,我收到以下错误消息:
MEX matlab/+caffe/private/caffe_.cpp 使用“g++”构建。/tmp/mex_286607035953408_13265/caffe_.o: 在函数
net_copy_from(int, mxArray_tag**, int, mxArray_tag const**)': caffe_.cpp:(.text+0x167d): undefined reference to
caffe::Net::CopyTrainedLayersFrom(std::string)' /tmp/mex_286607035953408_13265/caffe_.o: 在函数get_net(int, mxArray_tag**, int, mxArray_tag const**)': caffe_.cpp:(.text+0x182b): undefined reference to
caffe::Net::Net(std::string const&, caffe::Phase, int, std::vector > const*, caffe::Net const*)' /tmp/mex_286607035953408_13265/caffe_.o: 在函数get_solver(int, mxArray_tag**, int, mxArray_tag const**)': caffe_.cpp:(.text+0x343f): undefined reference to
caffe::ReadSolverParamsFromTextFileOrDie(std::string const&, caffe::SolverParameter* )' /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
google::base::CheckOpMessageBuilder::NewString()' /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 to
google::base::CheckOpMessageBuilder::NewString()' collect2:错误:ld 返回 1 个退出状态Makefile:511:目标“matlab/+caffe/private/caffe_.mexa64”的配方失败 make:*** [matlab/+caffe/private/caffe_.mexa64] 错误 255
有没有人在 Ubuntu 16.04 上成功编译过 Matcaffe?我还用 MATLAB R2014b 和 gcc 4.7 尝试了相同的过程,但没有任何成功。