我有一段代码,在我的博士学习期间在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. 在windows上交叉编译一个python脚本到linux可执行文件
- 2. 将一个文件从一个Windows Java应用程序移动到一个Linux机器上
- 3. java测试 - 在另一个linux机器上运行一个java应用程序
- 4. 编译C++程序在Linux上运行
- 5. OpenMP在一台机器上并行,但在另一台机器上串行
- 6. Linux:将多个文件合并到一个新行上
- 7. 文件上传并移动到另一台服务器
- 8. 如何在Linux上使用另一个libC进行编译? (gcc)
- 9. 程序编译在一台服务器上,不在另一台上
- 10. 为什么我的flex/yacc编译器不能在另一台linux机器上正确编译
- 11. 从windows可执行文件复制机器代码并在linux上运行
- 12. “编译”Python在另一台机器上运行
- 13. 将Eclipse移动到另一台机器上?
- 14. 从shell脚本在另一台linux服务器上远程执行命令
- 15. 在一台机器上编译gcc4.4.6,如何让另一台机器使用它?
- 16. 在Linux上远程执行可执行文件?
- 17. 如何从另一台PC上将Linux目录挂载到本地Linux PC上?
- 18. 编译Linux上
- 19. 使用另一台linux虚拟机访问虚拟linux机器
- 20. Qt编译器在linux上编译时显示错误机器
- 21. 编码UI测试不能在一台机器上运行,但可以在另一台机器上运行
- 22. 可执行jar文件不能在另一台机器上工作
- 23. 如何将hdfs文件复制到另一台服务器[linux]
- 24. 在Linux机器上执行C#win表单应用程序
- 25. 如何编译Mercurial并将其移动到另一台计算机
- 26. 四核上的Linux:单个可执行文件,四个进程
- 27. 我可以在Linux上动态加载可执行文件吗?
- 28. 将应用程序从本地Linux机器移动到Linux服务器
- 29. 如何将网站从一台机器上的IIS 7.5迁移到另一台机器上的IIS 8.5上?
- 30. 从一个Linux到另一个Linux的二进制文件
非常重要的是Linux和体系结构的味道。为i386编译的可执行文件在ARM或68000上运行具有挑战性,但即使这样做可以使用另一个人的目标上的虚拟机来完成。 – wallyk 2013-04-29 14:17:34