2013-04-29 90 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

相關問題