如何将library.a与f2py链接起来?

2024-05-16 13:52:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用ugly将CUTEst与python接口。我试着像这样使用f2py:

f2py -c -m ugly \
 /home/gabriel/Documentos/ugly/src/gen77/gen77_main.f \
 /home/gabriel/Documentos/ugly/src/gen77/gen77.f \
 ELFUN.f GROUP.f RANGE.f \
 -L/home/gabriel/Documentos/ugly/objects/pc64.lnx.gfo/double \
 -lcutest

其中libcutes.a/home/gabriel/Documentos/ugly/objects/pc64.lnx.gfo/double中。f2py未生成文件ugly.os,并给出以下消息:

/usr/bin/ld: /home/gabriel/Documentos/ugly/objects/pc64.lnx.gfo/double/libcutest.a(usetup.o): no se puede usar la reubicación R_X86_64_32S contra `.rodata.str1.1' cuando se hace un objeto compartido; recompile con -fPIC

另一方面,如果我用gfortran编译,它就可以工作了。在


Tags: srchomeobjectsmaindoubleuglysef2py
1条回答
网友
1楼 · 发布于 2024-05-16 13:52:13

要在Python的对象文件中使用代码,必须将对象文件编译为使用position independent code,以便链接器可以将其作为共享对象的一部分包含。错误是说库.rodata.str1.1没有被编译成使用位置无关的代码,因此它不能包含在共享对象中。您需要重新编译链接的库,并在编译时将附加标志-fPIC传递给gcc/gfortran。在

相关问题 更多 >