问题描述
首先请阅读---PS---部分。这个问题是我的误会。
我使用的是 ubuntu18.04 操作系统和 intel fortran 编译器“parallel studio xe 2020 update 4”ifort。
我尝试使用带有 -gen-dep 选项的 ifort 编译器在 fortran 源文件之间生成依赖关系。
以下简单代码是为我的测试编写的。文件名为“main.f90”。
program main
use mod_a
implicit none
end program main
我执行了以下命令来生成“main.f90”的依赖项。
ifort -gen-dep -Syntax-only main.f90
结果,我收到了以下错误消息。
main.f90(2): エラー #7002: コンパイル済みモジュールファイルを開くときのエラーです。INCLUDE パスを確認してください。 [MOD_A]
use mod_a
--------^
错误消息通知“mod_a.mod”文件尚不存在(虽然它是用日语编写的)。 如果已经通过编译 mod_a.f90 生成了“mod_a.mod”,则通过执行上述命令,我得到了以下“真正的依赖”。
main.o : \
main.f90 mod_a.mod
如何在不生成 mod_a.mod 的情况下生成依赖项? 如果存在实现我的目标的额外选项,我想优先了解这些选项。
感谢您的阅读。
---PS---
我向所有阅读这篇文章的人道歉。 这个问题是我的误会。
我再次尝试使用 ifort -gen-dep -Syntax-only main.f90
编译我的“main.f90”程序。
program main
use mod_a
implicit none
end program main
结果,我收到了以下错误消息和“真正的依赖”。
main.f90(2): エラー #7002: コンパイル済みモジュールファイルを開くときのエラーです。INCLUDE パスを確認してください。 [MOD_A]
use mod_a
--------^
main.o : \
main.f90 mod_a.mod
我不知道为什么我没有看到这种“真正的依赖”,但我的目标已经实现了。
然而,另外,我发现了另一个问题并解决了它。
如果“main.f90”有大量代码使用许多子程序、函数、变量等......
ifort -gen-dep -Syntax-only main.f90
返回
Fatal error: too many errors emitted,stopping Now
并且没有返回依赖项。
为了解决这个问题,我在 ifort 命令中添加了 -no-diag-error-limit
。
解决方法
您需要提供有关 mod_a
的信息。
预先编译它或将其提供给 ifort -gen-dep
命令
$ ifort -gen-dep -syntax-only main.f90 mod_a.f90
main.o : \
main.f90 mod_a.mod
mod_a.mod : \
mod_a.f90
mod_a.o : \
mod_a.f90