Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用f2py链接库_Python_Numpy_Linker_Fortran_F2py - Fatal编程技术网

Python 使用f2py链接库

Python 使用f2py链接库,python,numpy,linker,fortran,f2py,Python,Numpy,Linker,Fortran,F2py,我有一个fortran程序,它使用一些库文件。我正在尝试将它们与正在创建的模块文件一起链接 我试图链接的库文件名为ulib.a,位于目录/home/replace/lib/ 我使用的命令是: f2py -L/home/replace/lib/ -lulib.a -c main.f -m progs 我得到以下错误: /usr/bin/ld: cannot find -lulib.a collect2: ld returned 1 exit status /usr/bin/ld: cannot

我有一个fortran程序,它使用一些库文件。我正在尝试将它们与正在创建的模块文件一起链接

我试图链接的库文件名为
ulib.a
,位于目录
/home/replace/lib/

我使用的命令是:

f2py -L/home/replace/lib/ -lulib.a -c main.f -m progs
我得到以下错误:

/usr/bin/ld: cannot find -lulib.a
collect2: ld returned 1 exit status
/usr/bin/ld: cannot find -lulib.a
collect2: ld returned 1 exit status

我将感谢任何帮助

试着去掉.a-我确信链接器已经知道库是.a,因此在您的示例中,它将查找ulib.a.a,但失败。

我必须从库名称中删除扩展名,并提供完整路径。由于某种原因,使用
-L
参数提供路径不起作用

f2py -l/home/replace/lib/ulib -c main.f -m progs

库应具有全名
libxxx。a
其中
xxx
是给定名称。那就做吧

f2py -L. -lxxx -c main.f90 -m progs
请注意,只有
xxx
-l
之后。如果您自己创建库,请记住包含
-fPIC
。例如,它可以如下所示:

gfortran -c -fPIC source1.f90 source2.f90
ar crs libxxx.a obj1.o obj2.o
f2py -L. -lxxx -c main.f90 -m progs

在本例中找到指导:

静态库只是一组对象文件,因此您可以直接将其包括为
f2py-c main.f/home/replace/ulib.A-m progs
或类似内容。那么Steve Barnes的建议不起作用了?我一直都是这样做的,这对我来说很有效。我也必须用这种方式(只有-l而不是-l+-l)。我使用的是f2py版本2的windows。此外,如果库名为
libname.a
,则库名应以
lib
开头,并且仅包含
-fname
。对不起,我认为这不是很有用。(1) OP表示该库位于另一个文件夹中,必须引用该文件夹。(2) 除此之外,这个答案与目前的答案有什么不同?