我正在尝试使用以下命令编写 f2py 来包装 FORTRAN90 代码:
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
我在csm.f90中调用了LAPACK函数zhegv()。一切都编译成功了,但当我从终端调用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函数调用?我看到其他人已经问过如何直接使用LAPACK模块来进行f2py,但在这里我是在另一段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
I get
---------------------------------------------------------------- -----------
ImportError Traceback (most recent call last)
<ipython-input-1-8181d9e1b27d> in <module>()
----> 1 from p_avg import pa
ImportError: No module named p_avg
f2py -L/path/to/lapack -llapack -c nrt.f90 lu.f90 sqn.f90 csm.f90 pa.f90 -m p_avg
。 - francis