1

Ubuntu 16.04 で Matcaffe をコンパイルしようとしています。(gcc 5 を使用して) caffe と pycaffe を正常にコンパイルできました。ただし、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 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 でも同じ手順を試しましたが、成功しませんでした。

4

1 に答える 1

1

Caffe は libstdc++ および opencv のシステム バージョンに対してコンパイルされますが、matcaffe の実行時に matlab バージョンにリンクします。追加することでこれを適切に解決しました

export LD_PRELOAD=${LD_PRELOAD}:/usr/local/x86_64-linux-gnu/libstdc++.so.6

Caffe のビルド時に~/.bashrcopencv を無効化 (コメントをUSE_OPENCV := 0解除) します。Makefile.config

于 2016-11-22T09:01:45.200 に答える