我试图在Arch Linux x64上使用libc ++ , libc ++ abi和clang ++ 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。