【问题标题】:Can I compile f90 without recreating .mod files我可以在不重新创建 .mod 文件的情况下编译 f90
【发布时间】:2021-06-22 07:44:39
【问题描述】:

我是 fortran 的新手,我正在努力了解编译所需的一切。到目前为止,一切都很好,但有些东西我没有得到。假设我修改了代码,但我的修改不会改变 .mod 文件的内容,我是否能够编译和创建目标文件而不重新创建 .mod 文件,如果是,应该如何我做。我试图在互联网上搜索,但我并没有真正找到答案。顺便说一句,我正在使用 gfortran。 提前谢谢你,如果答案已经存在,我很抱歉(我找不到)。

【问题讨论】:

  • 您是否使用任何构建系统,例如 Makefile 或类似的东西?您是在问如何避免不必要的重新编译?你能举个例子(不是代码,只是命令)吗?
  • @VladimirF 不幸的是我无法展示示例,但这正是我想要做的,避免不必要的重新编译,因为它是一个巨大的程序,总共需要大约 4 分钟来编译。是的,正在使用 Makefile!
  • 在这种情况下,您必须展示一个示例。请参阅 How to Askminimal reproducible example。请注意,还有其他更现代的构建系统,其中一些专门针对 Fortran。基本上这是一个XY问题,你实际上不需要避免重新创建一个mod文件,你需要避免重新编译。
  • @VladimirF 你说得对,我应该展示其中的一部分,但不幸的是它是机密的,而且它是很多人使用的程序,所以至少在不久的将来不可能使用另一个构建系统。我只是实习2个月,没资格说太多

标签: module compilation fortran gfortran object-files


【解决方案1】:

当您使用 gfortran 时,编译器已经为您完成了这项工作。编译模块时,它会在一个临时名称下创建.mod 文件,然后它会比较现有.mod 文件(如果存在)和新文件之间的校验和,并仅用新文件替换现有文件如果校验和不同。

【讨论】:

  • 非常感谢您的回答。好的,但是有没有办法告诉 gfortran 根本不要创建这些 .mod?我不会在 .mod 文件的娱乐上浪费时间
  • 您是否分析并验证了编写 .mod 文件占用了该源文件整个编译时间的很大一部分?
  • 不,我还没有测试过,我找不到如何只生成 .mod 文件:'( 总编译时间约为 4 分 19 秒
  • 问题是代码是由博士生和研究人员开发的,他们有时需要编译很多次,这可能是真正的“浪费”时间。这就是为什么他们需要将时间减少到最低限度
  • 如果您只想生成.mod文件而不生成.o,从而节省一些时间,您可以使用-fsyntax-only选项。
猜你喜欢
  • 1970-01-01
  • 2012-07-09
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 2013-11-15
  • 2020-03-13
相关资源
最近更新 更多