4

MPICHとNAGCライブラリ(乱数を生成するためにNAGを使用)を使用するC ++プログラムを、pgCCコンパイラでコンパイルしようとしていました。

ただし、コンパイラから次のエラーメッセージが表示されました。

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

これらのメッセージが何を指しているのかわかりません。誰かが私に彼らが何を意味するのか説明できますか?

問題のある線の位置を把握する方法はありますか?inは私のコードの行番号を示しています255か?(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

これは、たくさんのアセットをダウンロードするときに時々起こります。名前空間を共有する2つのスクリプトや、使用しているUnityのバージョン用ではないスクリプトなど、問題が発生する可能性があります。

私のアドバイスは次のとおりです。

1)すべてのスクリプトをチェックして、重複する名前がないかどうかを確認します。これを簡単にするために、スクリプトをフォルダーに整理してください。

2)何が起こっているのかまったくわからない場合は、ダウンロードしたアセットフォルダを新しいものから古いものへと削除していきます。アセットフォルダを削除するたびに、エラーが変化するかどうかを確認してください。問題の原因となっているスクリプトを見つけたら、その理由を見つけるだけです。

于 2016-03-11T03:52:31.573 に答える
0

内部コンパイラエラーが発生した場合は、ハードウェアの不良が原因である可能性があります。たぶんあなたのRAMは故障していますか?memtest86を実行してみてください。

于 2017-04-01T10:23:14.300 に答える