【问题标题】:Gtest fails to link on mac with the default compilerGtest 无法在 mac 上使用默认编译器链接
【发布时间】:2014-02-11 14:39:46
【问题描述】:

当我尝试在我的 mac 上使用最新的 clang 构建一些使用 GTest 的代码时,它无法与

链接
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

...

任何人有修复它的想法?

【问题讨论】:

    标签: c++ macos linker googletest


    【解决方案1】:

    通过编译带有标志的Gtest来解决它

    ./configure CXX="clang++ -std=c++11 -stdlib=libc++" && make
    

    【讨论】:

    • 是的,当您使用 std c++ 库符号看到这些类型的错误时,这表明 (std) 库与代码不匹配。使所有内容都具有相同的版本(编译器 C++ std 匹配 std lib)通常可以解决此问题。
    猜你喜欢
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    相关资源
    最近更新 更多