我在编译glog时遇到了一个问题,我运行了“make”,然后我得到了一个错误:
架构的未定义符号:"testing::internal::StrStreamToString(std::__1::basic_stringstream,std::__1::allocator >)",参考来源::testing::String::in::StreamableToString(void&) in logging_unittest -日志_unittest.o测试::-v测试::-v::StreamableToString(int const&) in for _unittest-日志_unittest-for_unittest.ld:符号(S)在体系结构中找不到:错误:链接器命令与退出代码1(使用-v查看)调用:*logging_unittest错误1
我正在Mac上使用glog-0.3.3,那么在编译glog时,我如何才能改变测试呢?
在另一个上下文中,我使用Macport安装了glog和g阻隔,然后运行了一个小程序。它将生成一个错误:" error :未知命令行标志'logtostderr'“
我相信这就是链接到旗子的问题所在。那我该怎么解决呢。谢谢
发布于 2014-09-13 15:30:47
GLog需要编译在"google“命名空间中的GFlags,而不是现在默认的”GLog“命名空间。
为了设置这个名称空间,您必须从源代码编译并安装g频标志,并将GFLAGS_NAMESPACE变量设置为"google“。
下面是我在Kubuntu14.04中遵循的步骤,应该类似于在Mac中应该做的事情。这些文件将GFlags源代码放在/usr/local/src中,并将库安装在/usr/local/lib&包括目录中。最后一个命令(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单元测试源文件中的includes之后使用g标志的命名空间,如下所示:
#ifdef HAVE_LIB_GFLAGS
#include <gflags/gflags.h>
using namespace gflags;
#endifhttps://stackoverflow.com/questions/23534181
复制相似问题