内部编译器错误消息意味着什么,我能做些什么

What do internal compiler error messages mean, and what can I do?

本文关键字:做些什么 什么 意味着 编译器 错误 消息 内部      更新时间:2023-10-16

我试图用pgCC编译器编译我的C++程序,该程序使用MPICH和NAG C库(我使用NAG生成随机数)。

然而,编译器给了我以下错误消息:

PGCC-S-0000-Internal compiler error. linearize: bad ili #:       0 (mpisim.C: 225)
PGCC-S-0000-Internal compiler error. gen_aili: unrec. ili opcode:       0 (mpisim.C: 225)
PGCC-S-0000-Internal compiler error. linearize: bad ili #:       0 (mpisim.C: 266)
PGCC-S-0000-Internal compiler error. gen_aili: unrec. ili opcode:       0 (mpisim.C: 266)
PGCC/x86 Linux 12.4-0: compilation completed with severe errors

我不知道这些信息指的是什么。有人能向我解释一下它们的意思吗?

我有没有办法弄清楚有问题的线路的位置?(mpisim.C: 225)中的255是否表示我代码中的行号?

内部编译器错误是编译器中的一个错误。除了向编译器供应商提出问题之外,你没有什么可做的。

通常,当您试图编译不正确的代码时,会发生ICE,但编译器完全可以想象会被有效的C++阻塞。这种语言非常复杂,很难在所有可能的组合中测试每一个可能的特征。

如果你设法找出导致崩溃的代码行,你可以尝试用更简单的术语重写它(例如,通过引入额外的局部变量或typedef)。

它们表示编译器本身发现了错误或不一致。类似于在代码中使用assert

如果您编译了一些非常奇怪和非法的代码,可能只是编译器团队没有测试过这个用例。否则很可能是编译器出了问题。

当我下载一堆资产时,有时会发生这种情况。任何事情都可能出错,因为两个脚本共享一个命名空间,或者这些脚本不适用于您正在使用的Unity版本。

我的建议是:

1) 检查你所有的脚本,看看是否有任何重复的名字,确保你把它们组织在文件夹中,这样做会更简单!

2) 如果你根本不知道发生了什么,就开始删除你下载的资产文件夹,从最新到最旧。每次删除资产文件夹时都要进行检查,看看您的错误是否发生了变化。一旦你发现是哪个脚本造成了麻烦,就只需要找出原因了。

如果出现内部编译器错误,很可能是由于硬件不好造成的。也许你的内存有问题?尝试运行memtest86。