C++ 使用“libc+”编译时对“\uuuucxa\uThread\uAtexit@@CXXABI”的未定义引用+;`在linux上
我正在尝试使用libc++、libc++abi和clang++3.6.0在Arch-Linux x64上编译我的项目 项目正确编译,但未能链接到以下错误: 错误:cmakfiles/main.cpp.o:对符号“\uuuucxa\u thread\u atexit@@CXXABI\u 1.3.7”的引用未定义 /usr/lib/libstdc++.so.6:-1:错误:添加符号时出错:命令行中缺少DSO 我正在使用C++ 使用“libc+”编译时对“\uuuucxa\uThread\uAtexit@@CXXABI”的未定义引用+;`在linux上,c++,linux,linker,clang,libc++,C++,Linux,Linker,Clang,Libc++,我正在尝试使用libc++、libc++abi和clang++3.6.0在Arch-Linux x64上编译我的项目 项目正确编译,但未能链接到以下错误: 错误:cmakfiles/main.cpp.o:对符号“\uuuucxa\u thread\u atexit@@CXXABI\u 1.3.7”的引用未定义 /usr/lib/libstdc++.so.6:-1:错误:添加符号时出错:命令行中缺少DSO 我正在使用-stdlib=libc++-lc++abi标志编译和链接 有没有其他我应该链接的
-stdlib=libc++-lc++abi
标志编译和链接
有没有其他我应该链接的库?我是否缺少一个标志?可以链接到
-lsupc++
或提供一个小包装函数
(对于libc++
,可能是更好的方法)对于glibc实现:
extern "C" int __cxa_thread_atexit(void (*func)(), void *obj,
void *dso_symbol) {
int __cxa_thread_atexit_impl(void (*)(), void *, void *);
return __cxa_thread_atexit_impl(func, obj, dso_symbol);
}
值得一提的是,这只与GLYBC>= 2.18。< /P>快速谷歌搜索表明,这不是在C++ ABI中实现的。