我有一段代码,在我的博士学习期间在Fortran中编写,现在我正在和一些使用Linux的研究人员合作,他们需要我的模型,基本上是一个可执行文件。将来我可能会将其设为开源,但最终知道他们只是想要可执行文件,也是因为他们不是程序员,他们从来没有编写过程序。所以问题是:是否可以在我的Linux机器上编译它,然后将它发送给它们以便在另一台linux机器上使用它?或者,linux版本和发行版是否有用? 非常感谢 答:在linux上编译一个fortran程序并将可执行文件移动到另一台linux机器上
回答
如果你不使用许多库,你可以做到这一点。一个选项是静态链接可执行文件(-static
或类似的编译器选项)。你需要拥有所有需要的库的静态版本。有.a
后缀。它们通常不会默认安装在Linux发行版中,并且通常根本不会在存储库中提供它们。
在我的分配(OpenSuSE)中,它们的包装类似glibc-devel-static
,lapack-devel-static
等。
的另一个选项是编译在兼容的分布用户将有可执行文件(GLIBC版本很重要),并提供他们需要与你的可执行文件全部.so
动态链接库。
所有这些假设您使用相同的平台,如i586
或amd64
或arm
像wallyk评论。我大多假设你在PC上。您可以强制大多数编译器通过-m32
或-m64
选项生成32位或64位可执行文件。你需要这个开发库的正确版本。
谢谢。所以我的模型只有f90子程序,没有外部库。我的架构与其他人的架构相同,即它是x86_64。我不知道Linux发行版是否重要,但我有Centos 6.3和其他人Fedora(我们无法检查版本,但它应该是14)。你能否修改你的答案,以避免使用外部库和相同的架构?你的意思是“正确版本的开发库”?谢谢 – Lupocci 2013-04-30 17:58:50
按照答案中的说明,我大多假定为相同的架构。通过“开发库的正确版本”,我的意思是3位或64位,具体取决于您编译的程序版本。试着用'-static'选项进行编译,看看它是否在另一台机器上工作。 – 2013-05-02 19:14:55
- 1. 如何为另一台机器编译Linux可执行文件?
- 2. 在Linux机器上执行使用intel-fortran编译的程序
- 3. 如何编译Linux C程序在另一台Linux机器上运行?
- 4. 将文件从Tomcat Linux移动到另一台Linux服务器
- 5. 从一台linux机器到另一台linux机器的远程文件传输
- 6. .m文件在linux中的可执行文件在另一台linux机器上运行
- 7. 在windows上交叉编译一个python脚本到linux可执行文件
- 8. 将一个文件从一个Windows Java应用程序移动到一个Linux机器上
- 9. 使用Jenkins将文件从一台Linux机器复制到另一台机器
- 10. 一个Java应用程序可以在同一台Linux机器上监视另一个Java应用程序吗?
- 11. 将可执行jar文件运行到另一台机器
- 12. 在另一个Linux发行版上使用g ++编译的可执行文件是否受到限制?
- 13. java测试 - 在另一个linux机器上运行一个java应用程序
- 14. 编译C++程序在Linux上运行
- 15. OpenMP在一台机器上并行,但在另一台机器上串行
- 16. Linux:将多个文件合并到一个新行上
- 17. 如何在Linux上使用另一个libC进行编译? (gcc)
- 18. 文件上传并移动到另一台服务器
- 19. 反编译Linux上的win32病毒可执行文件
- 20. 程序编译在一台服务器上,不在另一台上
- 21. 在x86_64 linux机器上编译gentoo-bionic
- 22. 如何将DISPLAY导出到另一台Linux主机的Xserver上
- 23. 在Windows上编译Linux汇编程序
- 24. Tcl:如何在另一台机器上运行可执行程序
- 25. msbuild在一台机器上编译32位,在另一台机器上编译64位
- 26. 为什么我的flex/yacc编译器不能在另一台linux机器上正确编译
- 27. 从windows可执行文件复制机器代码并在linux上运行
- 28. 在另一台机器上运行时编译错误
- 29. “编译”Python在另一台机器上运行
- 30. 从shell脚本在另一台linux服务器上远程执行命令
非常重要的是Linux和体系结构的味道。为i386编译的可执行文件在ARM或68000上运行具有挑战性,但即使这样做可以使用另一个人的目标上的虚拟机来完成。 – wallyk 2013-04-29 14:17:34