2014-10-09 83 views
2

裏面叫我嘗試使用f2py FORTRAN90代碼寫入以下命令與LAPACK使用f2py從模塊

gfortran -c nrt.f90 
gfortran -c lu.f90 
gfortran -c sqn.f90 
gfortran -c csm.f90 -llapack -lblas 
gfortran -c pa.f90 

f2py -c nrt.f90 lu.f90 sqn.f90 csm.f90 pa.f90 -m p_avg 

我所說的LAPACK功能zhegv()內csm.f90包。一切編譯,但是當我打電話的IPython從終端

ipython --pylab 

然後在IPython的類型

from p_avg import pa 

我看到

--------------------------------------------------------------------------- 
ImportError        Traceback (most recent call last) 
<ipython-input-1-8181d9e1b27d> in <module>() 
----> 1 from p_avg import pa 

ImportError: ./p_avg.so: undefined symbol: zhegv_ 

有什麼事情需要做,以確保f2py可以理解這個LAPACK函數調用?我看到其他人詢問有關使用f2py直接與LAPACK模塊,但在這裏我使用另一塊FORTRAN代碼中的LAPACK函數。

謝謝。

更新: 當我嘗試在命令中鍵入在終端下面的意見建議,

f2py -L/usr/lib/lapack -llapack -c nrt.f90 lu.f90 sqn.f90 csm.f90 pa.f90 -m p_avg 

f2py -L/usr/lib/ -llapack -c nrt.f90 lu.f90 sqn.f90 csm.f90 pa.f90 -m p_avg 

然後鍵入IPython的下面,

from p_avg import pa 

我得到

---------------------------------------------------------------- ----------- 
ImportError        Traceback (most recent call last) 
<ipython-input-1-8181d9e1b27d> in <module>() 
----> 1 from p_avg import pa 

ImportError: No module named p_avg 
+0

你見過這[問題]和它的答案(http://stackoverflow.com/questions/10766969/f2py-wrapping-fortran-module-which-makes-use-of-subrouines-distributed-in-diffe) ?你可以試試像'f2py -L/path/to/lapack -llapack -c nrt.f90 lu.f90 sqn.f90 csm.f90 pa.f90 -m p_avg'? – francis 2014-10-09 16:52:04

+0

我在Ubuntu中,希望能把它放在正確的路徑上。不幸的是,另一個問題似乎來自該命令。 – Impossibear 2014-10-09 18:21:36

回答

1

在這種情況下,你確實可以寫

f2py -L/usr/lib/ -llapack -c nrt.f90 lu.f90 sqn.f90 csm.f90 pa.f90 -m p_avg 

,但你需要確保安裝了LAPACK開發庫。當我只安裝了liblapack3時,上述命令不起作用。