使用Makefile编译Fortran程序:模块依赖问题排查
Fortran编译Makefile问题根源分析
1. 依赖关系未正确定义
Makefile没有明确指定AltitudeCalculator.f90的编译必须依赖COESA.f90的编译完成。这会导致Make可能先尝试编译主程序,此时coesa_module.mod还未生成,直接抛出找不到模块的错误;即使后续模块生成,也需要二次编译才能触发主程序的重新构建。
2. 模块文件复制逻辑错误
你使用的@cp $@ .命令中,$@仅指代当前规则的目标文件(通常是.o目标文件),而Fortran编译生成的.mod模块文件并不在$@的范围内。所以编译COESA.f90后,只会复制.o文件到当前目录,coesa_module.mod仍留在build目录,主程序编译时自然找不到。
3. 编译器模块搜索路径未配置
即使build目录下已经生成了coesa_module.mod,但你的编译命令没有通过-I选项指定编译器到build目录搜索模块文件。编译器默认只会在当前工作目录和系统默认路径查找.mod文件,因此无法识别build中的模块,必须手动复制到当前目录才能被找到。
内容的提问来源于stack exchange,提问作者Bean_from_accounts
相关产品推荐
相关产品推荐

