我發現了一些關於此問題的先前問題,但無法找到正確關聯Makefile中的庫和模塊文件*.mod
的建議。 我有一個項目目錄名爲project
其中一個庫中的所有源文件都在project/src
,所有編譯*.mod
文件都放在project/include
,並創建靜態庫到使用以下目錄project/lib
:正確構建Fortran庫並使用它們構建應用程序
ar rc myLibrary.a module1.o module2.o module3.o
在此之後,我在目錄project/applications
中創建應用程序代碼(使用這些庫的Fortran程序)。我現在在根級別(即project
內部)創建了一個可以構建應用程序的簡單shell腳本。這部分是我無法讓流程工作的地方。
下面是我在做什麼:
INCLUDELIB='./include'
LINKLIB='./lib'
INCLUDEOTHER=<include directories for other math libraries>
LINKOTHER=<link directories and link flags for other math libraries>
COMPILER='ifort'
COMPOPTS=<compiler flags, currently I use none>
# building the application:
$COMPILER $COMPOPTS -c ./applications/application.f90 -I$INCLUDELIB $INCLUDEOTHER -L$LINKLIB $LINKOTHER
$COMPILER $COMPOPTS application.o -I$INCLUDELIB $INCLUDEOTHER -L$LINKLIB $LINKOTHER -o application.out
此過程不起作用,它給Error in opening the compiled module file. Check INCLUDE paths.
我嘗試了上述的幾個變種從我讀這個在網絡上,並我希望這不是一些輕微/愚蠢的錯誤,我忽略了導致這一點的原因。
任何幫助或建議將不勝感激。
非常感謝您的解釋。它有助於使事情更清晰。但是,在這種情況下,所有文件都是我自己編寫的庫。它們都使用相同的編譯器進行編譯。我實際上認爲我遇到了一個問題,即在編譯步驟中我做了錯誤的事情。有什麼你可以看到可能是我正在使用的編譯過程的問題? – computanjohn 2015-02-09 19:40:52
1)你確定你使用的模塊已經被編譯了嗎? (相應的.mod文件存在)2)也許你在''use''之後犯了一個錯字。 3)如果一切似乎100%正確,那可能是因爲錯誤而在源文件中插入了不可打印的字符。嘗試刪除出現錯誤的整行並重新輸入。 – 2015-02-10 00:11:10