将 gcc11.0 更新到 gcc13.1 并编译程序但分段错误

Update gcc11.0 to gcc13.1 and compile the program but segmentation fault

提问人:Ustinian 提问时间:10/12/2023 最后编辑:273KUstinian 更新时间:10/12/2023 访问量:111

问:

我已将编译器 gcc-11.3.0 更新为 gcc-13.1。gcc-v

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/13.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.1.0 (GCC)

g++ -v

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/13.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.1.0 (GCC)

我成功编译了程序。g++ main.cpp -std=c++20 -o main

#include <iostream>

int main(int argc, char const *argv[]) {
  std::cout << "hello world\n";
  return 0;
}

但是,当我运行它时.它说然后我用来检查程序./main16553 segmentation fault "/home/gaoxiang/project/minilog/"mainldd

> ldd main
        linux-vdso.so.1 (0x00007fff498c4000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5251274000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f525118d000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f525116d000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5250f45000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f52514bd000)

我使用 gdb 调试程序,gdb 显示:

Starting program: /home/gaoxiang/project/minilog/main
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x0000155555406f5a in std::ostream::sentry::sentry(std::ostream&) () from /lib/x86_64-linux-gnu/libstdc++.so.6

我不知道如何处理

C Linux GCC G++

评论

0赞 HolyBlackCat 10/12/2023
什么 linux 发行版?您是如何更新 GCC 的?通常,通常的智慧是不要接触系统 GCC,并在其旁边安装新的 GCC(命名 或其他名称)。gcc-13
0赞 Ustinian 10/12/2023
@HolyBlackCat 我使用 wsl2(Ubuntu 22.04 lts)。我使用 wget 下载 gcc13.1 并编译、安装它
0赞 HolyBlackCat 10/12/2023
怎么说?你用什么命令来编译和安装它?which gcc
0赞 Ustinian 10/12/2023
@HolyBlackCat 它说我只是用来编译和安装它/usr/local/bin/gccmake -j8sudo make install
0赞 HolyBlackCat 10/12/2023
您知道您可以从 PPA 安装它而不是自己构建它吗?launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/......这对我来说是开箱即用的。

答: 暂无答案