我正在尝试使用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 usarlareubicaciónR_X86_64_32Scontra` .rodata。 str1.1'cuando se hace un objeto compartido;重新编译con -fPIC
另一方面,如果我使用gfortran编译它就可以了。
答案 0 :(得分:0)
要在Python的目标文件中使用代码,必须将目标文件编译为使用position independent code,以便链接器可以将其作为共享对象的一部分包含在内。错误是说库.rodata.str1.1
没有被编译为使用与位置无关的代码,因此它不能包含在共享对象中。您需要重新编译要链接的库,并在编译时将附加标志-fPIC
传递给gcc / gfortran。