我有一段代碼,在我的博士學習期間在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