如何将库.a与f2py链接?

时间:2015-02-13 18:11:21

标签: python numpy libraries f2py

我正在尝试使用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/doublef2py未生成文件ugly.os并提供此消息:

  

/ usr / bin / ld:/home/gabriel/Documentos/ugly/objects/pc64.lnx.gfo/double/libcutest.a(usetup.o):no se puede usarlareubicaciónR_X86_64_32Scontra` .rodata。 str1.1'cuando se hace un objeto compartido;重新编译con -fPIC

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

1 个答案:

答案 0 :(得分:0)

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