4

我试图用 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

我不知道这些消息指的是什么。有人可以向我解释他们的意思吗?

有没有办法让我找出有问题的线的位置?255in是否(mpisim.C: 225)指示我的代码中的行号?

4

4 回答 4

15

内部编译器错误是编译器中的错误。除了向编译器供应商提出问题之外,您无能为力。

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

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

于 2012-09-13T11:54:55.217 回答
1

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

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

于 2012-09-13T11:55:06.153 回答
1

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

我的建议是:

1) 检查所有脚本,看看是否有任何重复的名称,确保将它们组织在文件夹中以简化操作!

2)如果您根本不知道发生了什么,请开始删除您从最新到最旧下载的资产文件夹。每次删除资产文件夹时都要检查一下,看看你的错误是否改变。一旦您找到了导致问题的脚本,只需找出原因。

于 2016-03-11T03:52:31.573 回答
0

如果您收到内部编译器错误,则可能是由于硬件故障。也许你的RAM有问题?尝试运行 memtest86。

于 2017-04-01T10:23:14.300 回答