解决用gcc7.3链接gtest1.7的问题

最近要在新系统中使用gcc7.3, 配套使用的gtest是1.7版本的,对于下面的程序:

#include <gtest/gtest.h>

TEST(testSuite, ShouldSucceed) {
EXPECT_EQ(1, 1);

}

int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);

采用下面的命令

~/gcc/7.3.0_1/bin/g++ -std=c++11 -o g gtest_main_unittest.cc -I/gtest/1.7.0_1/include/ -L/gtest/1.7.0_1/lib/ -lgtest -lpthread

结果却发现怎么编译都不通过,一直报下面的错误:

/tmp/ccZdMeII.o: In function `testing::AssertionResult testing::internal::CmpHelperEQ<int, int>(char const*, char const*, int const&, int const&)':
gtest_main_unittest.cc:(.text._ZN7testing8internal11CmpHelperEQIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_[_ZN7testing8internal11CmpHelperEQIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_]+0x8d): undefined reference to `testing::internal::EqFailure(char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)'
collect2: error: ld returned 1 exit status

最后请教了同事,才找到原因,原来我们编译gtest使用用的gcc版本是4.8.4,现在如果要在gcc7.3中使用的话,必须要保持ABI兼容,上面的命令最后加上 -D_GLIBCXX_USE_CXX11_ABI=0:

~/gcc/7.3.0_1/bin/g++ -std=c++11 -o g gtest_main_unittest.cc -I/gtest/1.7.0_1/include/ -L/gtest/1.7.0_1/lib/ -lgtest -lpthread -D_GLIBCXX_USE_CXX11_ABI=0

对于CMake文件,加上下面一句也可以了

add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=0)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值