我写了一个"你好世界";C代码:
#include<stdio.h>
int main()
{
printf("hello world");
return 0;
}
运行以下命令时:
gcc main.c -o main
我得到以下错误:
main.c: In function ‘main’:
main.c:8:1: internal compiler error: Segmentation fault
}
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
以下是lsb_release -a
:的输出
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic
gcc版本:
gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
如何解决此问题?
编辑
我用g++
:编译了代码
g++ main.c -o main
它运行良好,没有任何错误。
考虑到gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0
的GCC版本,这是Ubuntu的问题。Ubuntu18.04发布于4年半前,GCC本身出现问题的可能性很小。正如@thebusybee在评论中指出的,这几乎可以肯定是由编译器安装的一些问题引起的。
你需要做的是找出你的Ubuntu GCC安装有什么问题。首先,确保你没有做导致问题的事情。环境变量,如LD_PRELOAD
(或任何LD_*
环境值(可以影响GCC。还有许多其他环境可以。
由于你发布了无法升级操作系统的消息,这意味着你在一个有单独系统管理员控制操作系统安装的组织中工作。因此,如果GCC的失败不是由您正在做的事情引起的,那么这实际上是系统管理员需要解决的问题。如果您的组织让他们控制操作系统的安装,包括他们控制的所有内容,而您无法更改,例如此处提供的操作系统GCC安装。
你能做些什么来保持工作:
- 首先,确保你没有做一些导致问题的事情
- 检查您的环境中是否存在任何
LD_*
环境,如LD_PRELOAD
。确保他们没有造成问题 - 检查其他可能影响GCC的环境
- 检查您的环境中是否存在任何
- 在允许修改的地方安装GCC版本,例如您的主目录
- 修改
PATH
和其他必要的环境以使用本地GCC副本
- 修改
- 使用组织的流程创建故障单,让系统管理员调查并修复系统。如果不允许您对其进行修改,则是他们的问题
- 如果有时间,可以添加
-v
详细标志或使用GCC的开发人员选项(如-freport-bug
(来找出系统的问题,并帮助系统管理员解决此处的实际问题