gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:49:27 25 4
gpt4 key购买 nike

我正在尝试使用 libc++libc++abiclang++ 3.6 在 Arch Linux x64 上编译我的项目。 0

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

error: CMakeFiles/main.cpp.o: undefined reference to symbol '__cxa_thread_atexit@@CXXABI_1.3.7'

/usr/lib/libstdc++.so.6:-1: error: error adding symbols: DSO missing from command line

我正在使用 -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);
}

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

关于c++ - 在 Linux 上使用 `__cxa_thread_atexit@@CXXABI` 编译时未定义对 `libc++` 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29322666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com