You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu22.04下GCC12/13编译时无法识别std::stacktrace求助

解决GCC编译std::stacktrace时的"未声明"错误

问题原因

GCC 12和13对C++23的std::stacktrace的支持属于实验性特性,默认并未启用,所以即使指定了-std=c++23编译选项,编译器也不会识别std::stacktrace相关符号。

解决步骤

1. 添加实验性库启用选项

编译时必须加上-fexperimental-library参数,明确告诉GCC启用实验性C++23组件。

2. 调整编译命令顺序

链接库的参数需要放在源文件之后,否则会出现链接错误。正确的编译命令应为:

g++-13 -std=c++23 -fexperimental-library test.cpp -lstdc++_libbacktrace

如果使用GCC 12,将命令中的g++-13替换为g++-12即可。

3. 验证编译运行

执行上述命令后,编译成功的话,运行生成的可执行文件会输出调用栈信息,最后打印779。

补充说明

  • GCC 14及以后版本中,std::stacktrace已经从实验特性转正,无需再添加-fexperimental-library选项,仅需指定-std=c++23并链接-lstdc++_libbacktrace即可。
  • 确保系统已安装对应版本的标准库开发包:GCC13对应libstdc++-13-dev,GCC12对应libstdc++-12-dev,若未安装可通过sudo apt install libstdc++-13-dev(或对应版本)完成安装。

内容的提问来源于stack exchange,提问作者ATK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 17:08:19