【问题标题】:Matcaffe on Ubuntu 16.04Ubuntu 16.04 上的 Matcaffe
【发布时间】:2016-10-31 14:42:27
【问题描述】:

我一直在尝试在 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 文件,我也无法在 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 tocaffe::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”的配方 制作失败:*** [matlab/+caffe/private/caffe_.mexa64] 错误 255

有没有人在 Ubuntu 16.04 上成功编译过 Matcaffe? 我还用 MATLAB R2014b 和 gcc 4.7 尝试了相同的过程,但没有任何成功。

【问题讨论】:

    标签: matlab caffe ubuntu-16.04 matcaffe


    【解决方案1】:

    Caffe 是针对 libstdc++ 和 opencv 的系统版本编译的,但在运行 matcaffe 时会链接到 matlab 版本。我通过附加

    方便地解决了这个问题
    export LD_PRELOAD=${LD_PRELOAD}:/usr/local/x86_64-linux-gnu/libstdc++.so.6
    

    ~/.bashrc 并在构建Caffe 时禁用opencv(在Makefile.config 中取消注释USE_OPENCV := 0)。

    【讨论】:

      猜你喜欢
      • 2016-11-26
      • 1970-01-01
      • 2016-11-17
      • 2018-02-02
      • 2016-11-08
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多