当我尝试编译一些我正在编写的代码时,我遇到了一个奇怪的错误。我有几个用于线性代数计算的Fortran模块;我不想让应用程序必须使用它们,所以我在它们周围编写了一个包装器模块:
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模块扩展并实际实现的抽象数据类型。
答案 0 :(得分:2)
内部编译器错误始终表示编译器中存在错误。检查您是否有最新版本的编译器,如果有,请提交错误报告(您可以查看open bugs部分,看看是否已经有人报告过,但最好是报告错误两次,而不是报告一次,所以不要过于担心可能会提交重复的错误报告。)