在linux上用`libc ++`编译时未定义引用`__cxa_thread_atexit @@ CXXABI`

我试图在Arch Linux x64上使用libc ++libc ++ abiclang ++ 3.6.0编译我的项目。

项目编译正确,但无法链接以下错误:

错误:CMakeFiles / main.cpp.o:未定义引用符号'__cxa_thread_atexit @@ CXXABI_1.3.7'

/usr/lib/libstdc++.so.6:-1:错误:错误添加符号:命令行中缺lessDSO

我正在使用-stdlib=libc++ -lc++abi标志进行编译和链接。

有什么额外的图书馆我应该链接? 我错过了一面旗帜?

或者用-lsupc++链接,或者为glibc实现提供一个小封装函数(可能是libc++的更好的方法):

 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); } 

值得一提的是,这只适用于glibc> = 2.18。