使用f2py在模块内调用LAPACK

4

我正在尝试使用以下命令编写 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
我在Ubuntu上,希望将正确路径放在lapack上。不幸的是,另一个问题似乎是由那个命令引起的。 - Impossibear
1个回答

2
在这种情况下,您确实可以编写:


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

但是您需要确保已安装lapack开发库。当我只安装了liblapack3时,上述命令无法工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接