2013-04-14 2 views
0

Я получаю странную ошибку, когда пытаюсь скомпилировать код, который я пишу. У меня есть несколько модулей Fortran, которые я использую для вычислений линейной алгебры; Я не хочу, чтобы сделать приложение должно использовать их все, поэтому я написал модуль обертки вокруг них:free_pi_tree error with gfortran

module linear_algebra_mod 
    use sparse_matrix_mod 
    use csr_matrix_mod 
    (etc.) 

так, что конечный пользователь может написать use linear_algebra_mod, чтобы получить все из них. Тем не менее, я получаю следующее сообщение об ошибке при компиляции модуля линейной алгебры:

gfortran -c sparse_matrix_mod.f90 
gfortran -c csr_matrix_mod.f90 
gfortran -c linear_algebra_mod.f90 
linear_algebra_mod.f90:5.8: 

use csr_matrix_mod 
    1 
Internal Error at (1): 
free_pi_tree(): Unresolved fixup 

Это был воспитан в сообщениях об ошибках here и here, но я не смог извлечь из тех, что я должен делать.

мутить воду еще больше, когда я вместо того, чтобы использовать модуль csr_matrix первого, так как:

module linear_algebra_mod 
    use csr_matrix_mod 
    use sparse_matrix_mod 

ошибка исчезает.

В случае, если эта справочная информация полезна: модуль sparse_matrix определяет абстрактный тип данных, который модуль csr_matrix расширяет и фактически реализует.

ответ

2

Внутренние ошибки компилятора всегда являются признаком ошибки в компиляторе. Проверьте, есть ли у вас последняя версия компилятора, и если да, напишите отчет об ошибке (вы можете посмотреть раздел открытых ошибок, чтобы узнать, был ли он ранее сообщен кем-то другим, но лучше иметь ошибка сообщалась дважды, чем о том, что о нем вообще не сообщается, поэтому не беспокойтесь о возможности подачи дубликата отчета об ошибке).