您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在用f2py包装的模块中包含已编译模块(最小工作示例)?

在用f2py包装的模块中包含已编译模块(最小工作示例)?

您的命令:

gfortran -c -fPIC libtest.f90

产生具有位置无关代码的目标文件。这是共享库而不是共享库的先决条件。

如果您想按原样使用该对象,则可以修改您的f2py调用

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模块

其他 2022/1/1 18:32:24 有473人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶