我正在尝试使用 libc ++ , libc ++ abi 和 clang ++ 3.6在 Arch Linux x64 上编译我的项目。 0
项目编译正确,但无法链接以下错误:
错误:CMakeFiles / main.cpp.o:对符号'__cxa_thread_atexit @@ CXXABI_1.3.7'的未定义引用
/ usr / lib / libstdc ++。so.6:-1:错误:添加符号时出错:命令行中缺少DSO
我正在使用-stdlib=libc++ -lc++abi
标志进行编译和链接。
我应该链接哪些额外的库?我错过了一面旗帜吗?
答案 0 :(得分:7)
与-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);
}
值得一提的是,这仅适用于glibc> = 2.18。