【问题标题】:Does google test support c++11 at eclipse?谷歌测试在 Eclipse 中是否支持 c++11?
【发布时间】:2015-05-11 10:36:14
【问题描述】:

我正在使用xubuntu 14.4eclipse lunagoogle test1.7

当我通过c++11 使用谷歌测试时,它不起作用。

在我使用xubuntu 12.4 之前,它有效。

gcc 版本为:gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2。

google test 不支持c++11

有错误信息:

12:08:58 **** Incremental Build of configuration Debug for project googletest ****
make all 
Building target: googletest
Invoking: Cross G++ Linker
g++ -L/home/smkang/test/gtest-1.7.0 -o "googletest"  ./src/googletest.o   -lpthread -lgtest
/home/smkang/test/gtest-1.7.0/libgtest.a(gtest-all.o): In function `testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::~ThreadLocal()':
gtest-all.cc:(.text._ZN7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEED2Ev[_ZN7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEED5Ev]+0x16): undefined reference to `pthread_getspecific'
gtest-all.cc:(.text._ZN7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEED2Ev[_ZN7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEED5Ev]+0x2b): undefined reference to `pthread_key_delete'
/home/smkang/test/gtest-1.7.0/libgtest.a(gtest-all.o): In function `testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >::~ThreadLocal()':
gtest-all.cc:(.text._ZN7testing8internal11ThreadLocalISt6vectorINS0_9TraceInfoESaIS3_EEED2Ev[_ZN7testing8internal11ThreadLocalISt6vectorINS0_9TraceInfoESaIS3_EEED5Ev]+0x16): undefined reference to `pthread_getspecific'
gtest-all.cc:(.text._ZN7testing8internal11ThreadLocalISt6vectorINS0_9TraceInfoESaIS3_EEED2Ev[_ZN7testing8internal11ThreadLocalISt6vectorINS0_9TraceInfoESaIS3_EEED5Ev]+0x2b): undefined reference to `pthread_key_delete'
/home/smkang/test/gtest-1.7.0/libgtest.a(gtest-all.o): In function `testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >::GetOrCreateValue() const':
gtest-all.cc:(.text._ZNK7testing8internal11ThreadLocalISt6vectorINS0_9TraceInfoESaIS3_EEE16GetOrCreateValueEv[_ZNK7testing8internal11ThreadLocalISt6vectorINS0_9TraceInfoESaIS3_EEE16GetOrCreateValueEv]+0x18): undefined reference to `pthread_getspecific'
gtest-all.cc:(.text._ZNK7testing8internal11ThreadLocalISt6vectorINS0_9TraceInfoESaIS3_EEE16GetOrCreateValueEv[_ZNK7testing8internal11ThreadLocalISt6vectorINS0_9TraceInfoESaIS3_EEE16GetOrCreateValueEv]+0x7c): undefined reference to `pthread_setspecific'
/home/smkang/test/gtest-1.7.0/libgtest.a(gtest-all.o): In function `testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::CreateKey()':
gtest-all.cc:(.text._ZN7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEE9CreateKeyEv[_ZN7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEE9CreateKeyEv]+0x16): undefined reference to `pthread_key_create'
/home/smkang/test/gtest-1.7.0/libgtest.a(gtest-all.o): In function `testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >::CreateKey()':
gtest-all.cc:(.text._ZN7testing8internal11ThreadLocalISt6vectorINS0_9TraceInfoESaIS3_EEE9CreateKeyEv[_ZN7testing8internal11ThreadLocalISt6vectorINS0_9TraceInfoESaIS3_EEE9CreateKeyEv]+0x16): undefined reference to `pthread_key_create'
/home/smkang/test/gtest-1.7.0/libgtest.a(gtest-all.o): In function `testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::GetOrCreateValue() const':
gtest-all.cc:(.text._ZNK7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEE16GetOrCreateValueEv[_ZNK7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEE16GetOrCreateValueEv]+0x16): undefined reference to `pthread_getspecific'
gtest-all.cc:(.text._ZNK7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEE16GetOrCreateValueEv[_ZNK7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEE16GetOrCreateValueEv]+0x7a): undefined reference to `pthread_setspecific'
collect2: error: ld returned 1 exit status
make: *** [googletest] error 1

12:08:59 Build Finished (took 1s.246ms)

我的代码是:

#include <iostream>
#include "gtest/gtest.h"

TEST(Ex,test)
{
    std::cout<<"hello googletest"<<std::endl;

}

int main(int argc, char * argv[])
{
    ::testing::InitGoogleTest(&argc, argv);
    RUN_ALL_TESTS();
    return 0;
}

【问题讨论】:

  • 你的构建编译选项命令行是什么?
  • 将错误信息缩进4个空格并添加&lt;!-- language: none --&gt;标签,使其看起来更有吸引力。还从代码中删除了额外的缩进。

标签: eclipse unit-testing c++11 gcc googletest


【解决方案1】:

简短的回答是肯定的,googletest 确实支持 C++11,尽管你所说的“支持”不是很清楚。如果这就是您的意思,您绝对可以使用实现 C++11 标准的编译器来编译 googletest。

关于错误,您在链接时似乎缺少 pthread 库。我不确定如何在 eclipse 中执行此操作,但一般情况下,您需要在编译时将“-pthread”传递给 GCC。

【讨论】:

    猜你喜欢
    • 2015-12-24
    • 1970-01-01
    • 2014-03-17
    • 2011-11-02
    • 2011-07-30
    • 2018-10-17
    • 2013-10-15
    • 2023-03-08
    • 2020-04-25
    相关资源
    最近更新 更多