0

'./configure' を実行した後に 'make' を実行して glog をコンパイルすると問題が発生し、エラーが発生しました。

アーキテクチャ x86_64 の未定義シンボル: "testing::internal::StrStreamToString(std::__1::basic_stringstream, std::__1::allocator > )"、次から参照: testing::internal::String testing::internal:: logging_unittest-logging_unittest.o の StreamableToString(void const const&) testing::internal::String testing::internal::StreamableToString(int const&) logging_unittest-logging_unittest.o ld の ld: アーキテクチャ x86_64 のシンボルが見つかりませんでした: エラー: リンカー コマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用してください) make: * [logging_unittest] エラー 1

Mac OS X で glog-0.3.3 を使用しています。glog のコンパイル中にテストを無効にするにはどうすればよいですか?

別のコンテキストでは、Macport を使用して glog と gflags をインストールし、小さなプログラムを実行しました。エラーが生成されます:「エラー: 不明なコマンド ライン フラグ 'logtostderr'」

それがgflagsへのリンクの問題だと思います。では、どうすれば修正できますか。ありがとう

4

1 に答える 1

0

GLog には、現在のデフォルトの "gflags" 名前空間ではなく、"google" 名前空間でコンパイルされた GFlags が必要です。

この名前空間を設定するには、ソースから gflags をコンパイルしてインストールし、GFLAGS_NAMESPACE 変数を「google」に設定する必要があります。

これは、Kubuntu 14.04 で従った手順であり、Mac OSX で行うべき手順と似ているはずです。これらは、GFlags ソースを /usr/local/src に配置し、ライブラリを /usr/local/lib&include ディレクトリにインストールします。最後のコマンド (ldconfig) は、ライブラリをシステムに登録します。

cd /usr/local/src/
cp /path/to/downloaded/gflags-2.1.1.tar.gz .
sudo tar xzf gflags-2.1.1.tar.gz
cd /tmp
mkdir buildgflags
cd buildgflags
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON \
-DGFLAGS_NAMESPACE=google -G"Unix Makefiles" /usr/local/src/gflags-2.1.1/
make
sudo make install
sudo ldconfig

または、GLog ソース (最後の返信に添付) に次のパッチを適用することもできます。

https://code.google.com/p/google-glog/issues/detail?id=194

基本的に、次のように GLogs 単体テスト ソース ファイルにインクルードした後、gflags の名前空間を使用します。

#ifdef HAVE_LIB_GFLAGS
#include <gflags/gflags.h>
using namespace gflags;
#endif
于 2014-09-13T15:30:47.060 に答える