【问题标题】:How to link a library .a with f2py?如何将库 .a 与 f2py 链接?
【发布时间】:2015-03-01 14:38:55
【问题描述】:

我正在尝试使用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;重新编译 con -fPIC

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

【问题讨论】:

    标签: python numpy libraries f2py


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多