Я пытался скомпилировать свою программу на C ++, которая использует библиотеки MPICH и NAG C (я использую NAG для генерации случайных чисел), с помощью компилятора 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
Я понятия не имею, на что ссылаются эти сообщения. Может кто-нибудь объяснить мне, что они имеют в виду?
Есть ли способ для меня, чтобы выяснить положение проблемных линий? Ли 255
в (mpisim.C: 225)
указать номер строки в моем коде?
Внутренняя ошибка компилятора — это ошибка в компиляторе. Вы мало что можете сделать, если не поднимать проблему с поставщиком компилятора.
Обычно ICE возникают, когда вы пытаетесь скомпилировать неправильный код, но также вполне возможно, что компилятор захлебнется допустимым C ++. Язык настолько сложен, что трудно протестировать каждую возможную функцию во всех возможных комбинациях.
Если вам удастся выяснить строку кода, которая вызывает сбой, вы можете попытаться переписать ее в более простых терминах (например, введя дополнительные локальные переменные или typedefs).
Они указывают, что компилятор обнаружил ошибки или несоответствия в себе. Похоже на использование assert
в вашем коде.
Если вы скомпилируете что-то очень странное и недопустимое, возможно, команда разработчиков не проверила этот вариант использования. В противном случае это скорее всего проблема с компилятором.
Это иногда случается со мной, когда я загружаю кучу ресурсов. Все может пойти не так, как от двух сценариев, совместно использующих пространство имен, так и от сценариев, не относящихся к той версии Unity, которую вы используете.
Мой совет:
1) Проверьте все ваши скрипты, чтобы увидеть, есть ли дубликаты имен, убедитесь, что вы храните их в папках, чтобы сделать это проще!
а также
2) Если вы вообще не можете понять, что происходит, начните удалять папки с активами, которые вы скачали, начиная с самых новых до самых старых. Проверяйте каждый раз, когда вы избавляетесь от папки активов, чтобы увидеть, если ваши ошибки меняются. После того, как вы выяснили, какой скрипт вызывал проблему, нужно просто выяснить, почему.
Если вы получаете внутреннюю ошибку компилятора, это может быть связано с плохим оборудованием. Может быть, ваша память неисправна? Попробуйте запустить memtest86.