GTEST无法通过默认编译器在Mac上链接

Gtest fails to link on mac with the default compiler

本文关键字:Mac 链接 编译器 默认 GTEST      更新时间:2023-10-16

当我尝试构建一些使用GTEST的代码时,在我的Mac上带有最新的clang,它在与

链接时失败了
Undefined symbols for architecture x86_64:
  "testing::Message::Message()", referenced from:
      parse::testing::DiffWithGoldenFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in v8test_helper.o
  "testing::internal::PrintStringTo(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_ostream<char, std::__1::char_traits<char> >*)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > testing::PrintToString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in v8sandbox_test.o
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > testing::PrintToString<char const*>(char const* const&) in v8sandbox_test.o
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > testing::PrintToString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in v8test_helper.o
  "testing::internal::EqFailure(char const*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool)", referenced from:
      testing::AssertionResult testing::internal::CmpHelperEQ<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(char const*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in v8sandbox_test.o

...

任何人都有修复它的想法吗?

通过用标志

对gtest进行编译解决了它
./configure CXX="clang++ -std=c++11 -stdlib=libc++" && make