1
GFLAGSを内部に持つファイルをコンパイルしようとしています。 私のコンパイルコマンド:Gflagsコンパイル時エラー
g++ -I ../eigen-eigen-b9cd8366d4e8/ -I/caffe_path/distribute/include my_file.cpp -std=c++0x -lpthread -lglog -lboost_system -DUSE_OPENCV
私のエラーメッセージは次のとおりです。
/usr/bin/ld: /tmp/ccv5GAaZ.o: undefined reference to symbol '_ZN6google26ShowUsageWithFlagsRestrictEPKcS1_'
//usr/lib/x86_64-linux-gnu/libgflags.so.2: error adding symbols: DSO missing from command line
それはGFLAGSでの作業私の最初の時間です。インターネット上の提案に基づいて、私は#ifndef
と#endif
という行をコメントしようとしましたが、それは助けになりませんでした。
#ifndef GFLAGS_GFLAGS_H_
namespace gflags = google;
#endif
私もこのthreadに関する提案を試みましたが、何も修正されませんでした。
このタイプのエラーが発生したとき、ロードしていたライブラリのバージョンが不一致であることが判明しました。 LDD_LIBRARY_PATHを調べて、各モジュールの正しいバージョンを取得していることを確認してください。また、いくつかの便利なオブジェクトで 'ldd'を試してみることもできます。全体的な環境で矛盾がないかチェックして、適切な* vars.shファイルをソース化していることを確認してください。 – Prune
OS(Ubuntu 16.04)をダウンロードし、最近すべてのライブラリをインストールします。だから私は、古いライブラリに関するいくつかの矛盾があると思います。あなたが言ったように、何らかの他の理由のためにまだ矛盾があるかもしれません。 LDD_LIBRARY_PATHと適切な* vars.shファイルの意味 – MIRMIX
私は余分な 'D'を入れました。 'LD_LIBRARY_PATH'でなければなりません。これは標準的な環境変数であり、ライブラリの負荷設定を制御します。ツールの中には、$ _HOME/binディレクトリに ' vars.sh'という名前のスクリプトがあります。それらのツールでは、パス変数を適切に設定するためにファイルをソースする必要があります(またはビルドスクリプト)。たとえば、MKL(IntelのMath Kernel Library)には、1つがあります。 –
Prune