创建可移植和静态的 fortran linux 二进制文件?

Create portable and static fortran linux binary?

我正在研究从 Fortran 代码创建可移植静态 Linux 二进制文件的选项(从某种意义上说,二进制文件应该能够 运行 在任何新的和相当旧的 Linux 发行版)。如果我理解正确(从 C 推断),可移植性的主要问题是 glibc 向前兼容但不向后兼容(即在旧发行版上创建的静态二进制文件将在新发行版上运行,但反之亦然)。这至少在我迄今为止有限的测试中似乎有效(有一个警告,使用 Scratch 文件会导致段错误 运行在某些情况下在较新的发行版上)。

至少在 C 中似乎可以通过添加遗留 glibc headers 来避免在旧发行版上进行编译,如

中所述

https://github.com/wheybags/glibc_version_header

此特定方法不适用于 Fortran 代码和编译器,但我想知道是否有人知道类似的方法(或更具体地说,创建可移植的 Fortran 二进制文件可能需要什么,旧的 glibc 是否足够或还必须使用旧的 libfortran 等)吗?

我建议使用许多linux docker 图像作为起点。

简而言之:许多 linux 是一个 "platform definition" 用于分发二进制轮(Python 可能包含编译代码的包),运行 在最新的 [=34] =] 系统。需要 manylinux 及其定义可以找到 Python Enhancement Proposal 513

他们的镜像基于 CentOS 5,包括所有基本的开发工具,包括 gfortran。您的流程是(我没有测试,可能需要稍作调整):

  1. 运行 来自 https://github.com/pypa/manylinux
  2. 的 docker 图片
  3. 使用标志 -static-libgfortran
  4. 编译您的代码

可能的调整是在他们不提供 libgfortran 的静态版本的情况下,在这种情况下您可以添加它 here

在大多数当前使用的 linux 系统上,生成的代码应该 运行。