/ / Caffeコンパイルエラー:gflags.cc 'が静的および動的にこの実行可能ファイルにリンクされています-c ++、makefile、deep-learning、caffe、gflags

Caffe Compilation Error:gflags.cc 'がこの実行ファイルに静的にも動的にもリンクされています

私はこれに続いてカフェをインストールしようとしています チュートリアル

基本的に、最後のmakeコマンドを入力すると、次のエラーが発生します。

me@dl-01:/home/me/caffe-master$ make runtest

.build_release/tools/caffe

caffe: command line brew

usage: caffe command args

commands:

train           train or finetune a model

test            score a model

device_query    show GPU diagnostic information

time            benchmark model execution time

Flags from tools/caffe.cpp:
-gpu (Run in GPU mode on given device ID.) type: int32 default: -1
-iterations (The number of iterations to run.) type: int32 default: 50
-model (The model definition protocol buffer text file..) type: string
default: ""
-snapshot (Optional; the snapshot solver state to resume training.)
type: string default: ""
-solver (The solver definition protocol buffer text file.) type: string
default: ""
-weights (Optional; the pretrained weights to initialize finetuning. Cannot
be set simultaneously with snapshot.) type: string default: ""
.build_release/test/test_all.testbin 0 --gtest_shuffle
ERROR: something wrong with flag "flagfile" in file "/root/glog-0.3.3/gflags-master/src/gflags.cc".  One possibility: file "/root/glog-0.3.3/gflags-master/src/gflags.cc" is being linked both statically and dynamically into this executable.
make: *** [runtest] Error 1

このエラーを解決する方法がわかりません。以前にこのエラーを見つけた人はいませんか?どうすれば解決できますか?

回答:

回答№1の場合は10

あなたがすでに他のどこかでこれを解決したかどうかにかかわらず、他の人が同じ問題に遭遇した場合に備えて、私はここに答えを投稿しています。

主に、この問題が発生したようです。 私たちは「常に正しく物事を読むわけではない」 盲目的にすべての指示に従い、それらはすべて私たちのケースに適用されると考えます。 ヒント: 彼らはしません</ strong>

Caffeのインストール手順(Ubuntuの手順を前提としています)には、次のようなセクションがあります。

すべてが14.04にパッケージ化されています。

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

次のタイトルを盲目的に無視します。

残りの依存関係、12.04

これらの依存関係をインストールし、必要に応じてビルドおよびインストールすると、2つのバージョンのlibgflags、1つの動的なバージョン( /usr/lib[/x86_x64] そして1つの静的 /usr/local/lib

解決

  1. 失敗した場合、次の機会に適切に指示を読みます。
  2. libgflagsをアンインストールします

    sudo apt-get remove -y libgflags
    
  3. 削除 make install バージョン

    sudo rm -f /usr/local/lib/libgflags.a /usr/local/lib/libgflags_nothreads.a
    sudo rm -rf  /usr/local/include/gflags
    
  4. Clean Caffeビルド

    cd <path>/<to>/caffe
    make clean
    
  5. libgflagsパッケージを再インストールします

    sudo apt-get install -y libgflags-dev
    
  6. Caffeを再構築

    make all
    make test
    make runtest
    

エヴォイラ。これですべてのテストが実行され、「深層学習ボートを揺るがす準備ができました。


回答№2の場合は1

また、共有の2つのライブラリをインストールしました。そのため、ライブラリと静的.aライブラリ。 / usr / local / include / glogフォルダーと同様にそれらをすべて削除しました。 システムを(クロス)コンパイルしたときに持ち込んだ.soファイル。.aはネイティブで最新のビルドのものです。 最終的に、.soファイルを提供するような方法で(ネイティブに)glogを構築することになりました。 クリーンダウンロードから始めました。

git clone git://github.com/google/glog

次に、CMakeLists.txtを編集しました。 それが言うところ:

add_library (glog
${GLOG_SRCS}
)

私はそれを次のように変更した:

add_library (glog SHARED
${GLOG_SRCS}
)

次に、他の指示に従うことができるはずです。私の特定のケースでは、これを行う必要があると言うのではなく、わずかに異なる指示を使用する必要がありました。私にとっては: mkdirビルド cdビルド

export CXXFLAGS="-fPIC"
cmake ..
make
sudo make install

これにより、.soファイルが提供され、適切な場所に配置されました。それから私はカフェでやり直し、それは私のためにエラーを修正しました。