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 中:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用) make:* [logging_unittest] 错误 1

我在 Mac OS X 上使用 glog-0.3.3。那么我如何在编译 glog 时进行测试?

在另一种情况下,我使用 Macport 安装了 glog 和 gflags,然后运行了一个小程序。它将产生一个错误:“错误:未知的命令行标志'logtostderr'”

我相信这是链接到 gflags 的问题。那么我该如何解决它。谢谢

4

1 回答 1

0

GLog 需要在“google”命名空间而不是现在默认的“gflags”命名空间中编译的 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 回答