编译Glog时出错

时间:2014-05-08 06:21:03

标签: compilation gflags glog

通过运行' make'编译glog时遇到了问题。运行' ./ configure' 然后我收到了一个错误:

架构x86_64的未定义符号:   " testing :: internal :: StrStreamToString(std :: __ 1 :: basic_stringstream,std :: __ 1 :: allocator> )",引自:       logging :: internal :: String testing :: internal :: StreamableToString(void const const&)in logging_unittest-logging_unittest.o       logging :: internal :: String testing :: internal :: StreamableToString(int const&)in 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的问题。那我该怎么办呢。谢谢

1 个答案:

答案 0 :(得分: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

它基本上使用gflas命名空间后的GLogs单元测试源文件,如下所示:

#ifdef HAVE_LIB_GFLAGS
#include <gflags/gflags.h>
using namespace gflags;
#endif