2013-04-29 71 views
1

我有一段代码,在我的博士学习期间在Fortran中编写,现在我正在和一些使用Linux的研究人员合作,他们需要我的模型,基本上是一个可执行文件。将来我可能会将其设为开源,但最终知道他们只是想要可执行文件,也是因为他们不是程序员,他们从来没有编写过程序。所以问题是:是否可以在我的Linux机器上编译它,然后将它发送给它们以便在另一台linux机器上使用它?或者,linux版本和发行版是否有用? 非常感谢 答:在linux上编译一个fortran程序并将可执行文件移动到另一台linux机器上

+0

非常重要的是Linux和体系结构的味道。为i386编译的可执行文件在ARM或68000上运行具有挑战性,但即使这样做可以使用另一个人的目标上的虚拟机来完成。 – wallyk 2013-04-29 14:17:34

回答

1

如果你不使用许多库,你可以做到这一点。一个选项是静态链接可执行文件(-static或类似的编译器选项)。你需要拥有所有需要的库的静态版本。有.a后缀。它们通常不会默认安装在Linux发行版中,并且通常根本不会在存储库中提供它们。

在我的分配(OpenSuSE)中,它们的包装类似glibc-devel-static,lapack-devel-static等。

的另一个选项是编译在兼容的分布用户将有可执行文件(GLIBC版本很重要),并提供他们需要与你的可执行文件全部.so动态链接库。

所有这些假设您使用相同的平台,如i586amd64arm像wallyk评论。我大多假设你在PC上。您可以强制大多数编译器通过-m32-m64选项生成32位或64位可执行文件。你需要这个开发库的正确版本。

+0

谢谢。所以我的模型只有f90子程序,没有外部库。我的架构与其他人的架构相同,即它是x86_64。我不知道Linux发行版是否重要,但我有Centos 6.3和其他人Fedora(我们无法检查版本,但它应该是14)。你能否修改你的答案,以避免使用外部库和相同的架构?你的意思是“正确版本的开发库”?谢谢 – Lupocci 2013-04-30 17:58:50

+0

按照答案中的说明,我大多假定为相同的架构。通过“开发库的正确版本”,我的意思是3位或64位,具体取决于您编译的程序版本。试着用'-static'选项进行编译,看看它是否在另一台机器上工作。 – 2013-05-02 19:14:55

相关问题