【问题标题】:Error when compiling Glog编译 Glog 时出错
【发布时间】:2014-06-25 09:32:11
【问题描述】:

在运行“./configure”后运行“make”编译 glog 时遇到问题 然后我得到一个错误:

架构 x86_64 的未定义符号: “testing::internal::StrStreamToString(std::__1::basic_stringstream, std::__1::allocator >)”,引用自: testing::internal::String testing::internal::StreamableToString(void const const&) 在 logging_unittest-logging_unittest.o 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 的问题。那么我该如何解决它。谢谢

【问题讨论】:

    标签: compilation gflags glog


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 2012-01-28
      • 2021-04-14
      • 2013-08-16
      相关资源
      最近更新 更多