C++基础程序段错误

标签 c++ segmentation-fault g++

这是我的CPP程序

#include <iostream>

int main(int argc, char *argv[]){
     return 0;
}

编译和执行它,导致段错误:

[18:08 ~] > g++ test.cpp
[18:09 ~] > ./a.out
Segmentation fault

有人知道这个问题吗? 非常感谢您的帮助。

以下是一些可能有用的详细信息:

[18:13 ~] > ldd a.out
 linux-vdso.so.1 =>  (0x00007fff3fdff000)
 libstdc++.so.6 => /usr/lib/gcc/x86_64-redhat-linux/3.4.6/libstdc++.so.6 (0x00007fc8f4a53000)
 libm.so.6 => /lib64/libm.so.6 (0x00007fc8f47ce000)
 libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc8f45b8000)
 libc.so.6 => /lib64/libc.so.6 (0x00007fc8f4225000)
 /lib64/ld-linux-x86-64.so.2 (0x00007fc8f4ca5000)

还有 gdb:

[18:15 ~] > gdb ./a.out
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from ...done.
(gdb) run
Starting program: a.out

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7bd48ec in std::ios_base::Init::Init() () from /usr/lib/gcc/x86_64-redhat-linux/3.4.6/libstdc++.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.107.el6.x86_64 libgcc-4.4.7-3.el6.x86_64
(gdb) bt
#0  0x00007ffff7bd48ec in std::ios_base::Init::Init() () from /usr/lib/gcc/x86_64-redhat-linux/3.4.6/libstdc++.so.6
#1  0x0000000000400831 in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at /usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../include/c++/3.4.6/iostream:77
#2  0x0000000000400873 in global constructors keyed to main() () at test.cpp:7
#3  0x0000000000400976 in __do_global_ctors_aux ()
#4  0x00000000004005a3 in _init ()
#5  0x00007fffffffe448 in ?? ()
#6  0x0000000000400905 in __libc_csu_init ()
#7  0x00007ffff7385c70 in __libc_start_main () from /lib64/libc.so.6
#8  0x0000000000400659 in _start ()
(gdb)

g++

[10:14 ~] > g++ -v
Reading specs from /usr/lib/gcc/x86_64-redhat-linux/3.4.6/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,f77 --disable-libgcj --host=x86_64-redhat-linux
Thread model: posix
gcc version 3.4.6 20060404 (Red Hat 3.4.6-19.el6)

最后一件事

[10:25 ~] > ls /usr/lib/gcc/x86_64-redhat-linux
3.4.6

谢谢。

最佳答案

显然您的问题是您的 g++ 安装已损坏。我从消息中看到你有 RHEL6,但不知何故有 libstdc++ 版本 3.4.6。

我的RHEL6系统有4.4.6版本的gcc、libstdc++等,我假设这个旧版本的libstdc++与你的问题有关。

您安装了哪些版本的 gcc、g++ 和 libstdc++?从其他消息看,你好像是4.4.7,但你是多版本还是混合版本?

rpm -q gcc g++ libstdc++

另外,你在/usr/lib/gcc/x86_64-redhat-linux下还有哪些目录?

ls /usr/lib/gcc/x86_64-redhat-linux

关于C++基础程序段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27552151/

相关文章:

c - 在 C 中调用函数时出现段错误

c++ - 何时为此结构调用复制构造函数?

c++ - QPlugin路径和初始化

空指针的 C++ 异常

c++ - g++ -I和-L命令查找.hpp文件不起作用

gcc - g++ 4.1.2 与 g++ 4.6 混合

c++ - 未使用的链接器输入文件 c++ g++ make 文件

c++ - 如何使用 VARIANT 指定颜色

PHP 5.3.6 段错误(在 apache w/mod_php 和 nginx w/fpm 中)

c - 使用 strtok 时出现段错误核心转储