在Linux上使用`libc ++`进行编译时,对__cxa_thread_atexit @@ CXXABI`的未定义引用

Vit*_*meo 6 c++ linux linker clang libc++

我正在尝试使用libc ++,libc ++ abiclang ++ 3.6.0Arch Linux x64上编译我的项目.

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

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

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

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

我应该链接哪些额外的库?我错过了一面旗帜吗?

Tho*_*mas 7

为glibc实现链接-lsupc++或提供一个小的包装函数(可能是更好的方法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);
}
Run Code Online (Sandbox Code Playgroud)

值得一提的是,这仅适用于glibc> = 2.18.