在OSX 64位上启用使用clang ++和C ++ 11标志构建时链接错误

时间:2015-08-12 22:46:19

标签: c++11 boost clang++

我有一个使用旧的C ++标准编译好的代码,当将-stdlib = libc ++和-std = c ++ 11传递给clang ++时它仍然编译好,但是在链接阶段构建失败。

我得到错误的片段:

[]

运行时: nm LogUtils.o | c ++ filt | grep U

我确实可以看到未解决的函数Undefined symbols for architecture x86_64: "std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::operator bool() const", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libcontrol_slib.a(Request.o) std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libcontrol_slib.a(LogUtils.o) "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::gptr() const", referenced from: std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::underflow() in libcontrol_slib.a(LogUtils.o) std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::pbackfail(int) in libcontrol_slib.a(LogUtils.o) std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::overflow(int) in libcontrol_slib.a(LogUtils.o) std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in libcontrol_slib.a(LogUtils.o)

std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::operator bool() const

在libc ++上运行nm时,确认此函数不存在。

我正在使用其他库,我使用c ++ 11重新启动并使用新的stdlib链接(除非我遗漏了一些东西),我正在连接 - 其中一个是boost库。

我想问的问题:

  1. 为什么编译器试图与非现有的libc ++函数链接?
  2. 可能导致什么呢?

0 个答案:

没有答案