c++23 建筑与 <stacktrace> 图书馆

问题描述 投票:0回答:1

我正在尝试使用我的 C++ 项目中的“stacktrace”库。 https://en.cppreference.com/w/cpp/header/stacktrace

我正在使用 GCC 13 和 CPP 标准 23。

在我的 cmake 文件中,我添加

target_link_libraries([Target] stdc++_libbacktrace)

如果编译,我会收到以下错误。

compile_utils.cpp:10:34: error: ‘std::stacktrace’ has not been declared
   10 |     const auto stacktrace = std::stacktrace::current();

我还尝试通过启用以下标志

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --enable-libstdcxx-backtrace")
但后来我得到以下 cmake 构建错误
cc1plus: error: unknown pass libstdcxx-backtrace specified in ‘-fenable’

如何解决上述错误?

非常感谢!

//用法

#include <stacktrace>

void test()
{
    const auto stacktrace = std::stacktrace::current();
    const auto strStackTrace = stacktrace.to_string();    
}

//以防万一,使用

"Ubuntu 22.04.3 LTS"

//以防万一,也尝试过

target_link_libraries([Target] stdc++exp)
但没有运气

https://gcc.gnu.org/onlinedocs/gcc-13.2.0/libstdc++/manual/manual/using.html#manual.intro.using.flags

c++ gcc g++ stack-trace c++23
1个回答
0
投票

不确定这个问题是否得到了解答(如果解决了,我很想看看你是如何解决的)但是如果你只是通过 apt-get install g++-13 安装了 G++13,那么这并没有启用堆栈跟踪:

/* Define if the <stacktrace> header is supported. */
/* #undef _GLIBCXX_HAVE_STACKTRACE */

除非有其他解决方案,否则默认构建似乎不支持堆栈跟踪。我会注意到,我是通过一个arm-ubuntu23.04图像来做到这一点的,它也可能是一个arm的东西,我会听从那些可能对这方面有更多了解的人

© www.soinside.com 2019 - 2024. All rights reserved.