我有一个使用一些库文件的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
我将不胜感激任何帮助!
答案 0 :(得分:3)
尝试不使用.a - 我有理由确定链接器已经知道库是.a所以在你的例子中它将寻找ulib.a.a并且失败。
答案 1 :(得分:1)
我必须从库名中删除扩展名,并提供完整路径。出于某种原因,使用-L
参数提供路径不起作用。
f2py -l/home/replace/lib/ulib -c main.f -m progs
答案 2 :(得分:0)
库应具有全名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
在此示例中找到了指导:https://modelingguru.nasa.gov/docs/DOC-2343