您的命令:
gfortran -c -fPIC libtest.f90
产生具有位置无关代码的目标文件。这是共享库而不是共享库的先决条件。
f2py -c --fcompiler=gfortran -I. libtest.o -m Main main.f90
这将链接目标文件并生成文件Main.cpython-33.so
(Python版本号可能与您不同),然后您就可以import main
在python代码中使用了。
如果您想实际产生一个共享库,则需要编译为一个共享库。一种方法是:
gfortran -shared -O2 -o libtest.so -fPIC libtest.f90
这样就产生了libtest.so
,现在您的原始f2py
命令将进行一个小的更改即可工作:
f2py -c --fcompiler=gfortran -L. -I. -ltest -m Main main.f90
我这里指的是小的变化正在发生变化-llibtest
,以-ltest
作为-l
选项添加lib
到库的前面,.so
到最后,如-ltest
将寻找libtest.so
。这会产生Main.cpython-33.so
与的动态链接依赖关系libtest.so
,因此您需要分发两个共享库才能使用python模块。