Mac OSX libc++ 缺少 std::uncaught_exceptions 符号
Mac OSX libc++ is missing std::uncaught_exceptions symbol
我注意到 Mac 上的库存 libc++ 中缺少 std::uncaught_exceptions 符号:
$ clang++ -v; otool -L /usr/lib/libc++.dylib
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
/usr/lib/libc++.dylib:
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
/usr/lib/libc++abi.dylib (compatibility version 1.0.0, current version 125.0.0)
...
$ nm /usr/lib/libc++.dylib | c++filt | grep uncaught
0000000000007782 T std::uncaught_exception()
U ___cxa_uncaught_exception
然而,header声明原型:
$ pwd
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
$ grep uncaught_exceptions exception
int uncaught_exceptions() noexcept; // C++17
_LIBCPP_FUNC_VIS int uncaught_exceptions() _NOEXCEPT;
这是一个糟糕的构建还是什么?从 libc++ 源代码中,我看到符号应该在 libc++ 中结束,但它不在那里,我在链接时得到了一个丢失的符号。
编辑:这是一个最小的失败程序:
$ cat t.cpp; clang++ -std=c++1z t.cpp
#include <exception>
int main () {
return std::uncaught_exceptions ();
}
Undefined symbols for architecture x86_64:
"std::uncaught_exceptions()", referenced from:
_main in t-a4015f.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Apple 认为更新 libc++.dylib 已经有一段时间(几年)了。我听说它 可能 在 OS El Capitan 之后更新。
Swift怎么了?! ;-)
我注意到 Mac 上的库存 libc++ 中缺少 std::uncaught_exceptions 符号:
$ clang++ -v; otool -L /usr/lib/libc++.dylib
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
/usr/lib/libc++.dylib:
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
/usr/lib/libc++abi.dylib (compatibility version 1.0.0, current version 125.0.0)
...
$ nm /usr/lib/libc++.dylib | c++filt | grep uncaught
0000000000007782 T std::uncaught_exception()
U ___cxa_uncaught_exception
然而,header声明原型:
$ pwd
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
$ grep uncaught_exceptions exception
int uncaught_exceptions() noexcept; // C++17
_LIBCPP_FUNC_VIS int uncaught_exceptions() _NOEXCEPT;
这是一个糟糕的构建还是什么?从 libc++ 源代码中,我看到符号应该在 libc++ 中结束,但它不在那里,我在链接时得到了一个丢失的符号。
编辑:这是一个最小的失败程序:
$ cat t.cpp; clang++ -std=c++1z t.cpp
#include <exception>
int main () {
return std::uncaught_exceptions ();
}
Undefined symbols for architecture x86_64:
"std::uncaught_exceptions()", referenced from:
_main in t-a4015f.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Apple 认为更新 libc++.dylib 已经有一段时间(几年)了。我听说它 可能 在 OS El Capitan 之后更新。
Swift怎么了?! ;-)