提问人:Hedgehog 提问时间:11/8/2023 最后编辑:Employed RussianHedgehog 更新时间:11/9/2023 访问量:103
C++23 <stacktrace> 依赖于 glibc 版本
C++23 <stacktrace> dependency on glibc version
问:
我一直在尝试在 C++23 标准中使用库。
昨天,我能够在我的一台服务器上成功使用它。
但是,当我尝试在另一台机器上执行相同的操作时,链接失败。stacktrace
链接器错误是
/opt/rh/devtoolset-13/root/include/c++/13.1.0/stacktrace:196: undefined reference to `__glibcxx_backtrace_pcinfo'
/opt/rh/devtoolset-13/root/lib/gcc/x86_64-pc-linux-gnu/13.1.0/../../../../x86_64-pc-linux-gnu/bin/ld: /home/archy/.nuget/ccVqmeKz.ltrans49.ltrans.o:/opt/rh/devtoolset-13/root/include/c++/13.1.0/stacktrace:206: undefined reference to `__glibcxx_backtrace_syminfo'
/opt/rh/devtoolset-13/root/lib/gcc/x86_64-pc-linux-gnu/13.1.0/../../../../x86_64-pc-linux-gnu/bin/ld: /home/archy/.nuget/ccVqmeKz.ltrans49.ltrans.o: in function `my_assert_backtrace()':
/opt/rh/devtoolset-13/root/include/c++/13.1.0/stacktrace:164: undefined reference to `__glibcxx_backtrace_create_state'
/opt/rh/devtoolset-13/root/lib/gcc/x86_64-pc-linux-gnu/13.1.0/../../../../x86_64-pc-linux-gnu/bin/ld: /home/archy/.nuget/ccVqmeKz.ltrans99.ltrans.o: in function `std::basic_stacktrace<std::allocator<std::stacktrace_entry> >::current(std::allocator<std::stacktrace_entry> const&) [clone .isra.0]':
/opt/rh/devtoolset-13/root/include/c++/13.1.0/stacktrace:259: undefined reference to `__glibcxx_backtrace_simple'
/opt/rh/devtoolset-13/root/lib/gcc/x86_64-pc-linux-gnu/13.1.0/../../../../x86_64-pc-linux-gnu/bin/ld: /opt/rh/devtoolset-13/root/include/c++/13.1.0/stacktrace:164: undefined reference to `__glibcxx_backtrace_create_state'
我怀疑存在一些 glibc 依赖性。
我成功使用 stacktrace 的机器有 .Ubuntu GLIBC 2.35-0ubuntu3.4
我未能使用 stacktrace 构建的机器有GNU libc 2.17
我现在的两个问题是
- stacktrace 是否与较旧的 libc 兼容?( 2.17 是在 2012 年发布的,所以我怀疑 ).
- 如果它对libc有版本依赖性,我怎样才能要求最低版本?(我搜索了发行说明和提交,但找不到任何内容。
答: 暂无答案
评论
__glibcxx
bits/c++config.h
_GLIBCXX_HAVE_STACKTRACE
__glibcxx_backtrace_syminfo
<stacktrace>
<stacktrace>
#ifdef